Modifying Event instead of Modified event? Is there such a thing?

A am wondering if there is a way to monitor when a uno object is being modified and optionally cancel changes.

There is the XModifyListener of course but it only know what happened not what is happening. So I guess I am looking for a XModifingListener or something of the sort.

For example if I wanted to attach a listener to a Calc Sheet or cell and watch for changing cell value and cancel the changes (perhaps display a message box) if certain criteria is not met (which can only be accessed in a macro). Would this be possible purely in code (python or basic)?

This would be similar behavior the the XVetoableChangeListener which can monitor the change of properties.

Maybe combine both listeners e.g.

class Combined(unohelper.Base, XModifyListener, XVetoableChangeListener):
#beyond here youre on your own … good luck!