Make the macro and store it in the macro fiolder of the profile you use with a name such as M111.m1s (User macro should be over 100 if I recall correctly) then its just a matter of having a VB button on your screen that calls the macro, all you would need in the button is code("m111"). Incidentally calling M111 from MDI or code would also do that macro.
How the macro is written depends on what you need to do but if its simple then its just a case of
Code("G0X0Y0XZ2")
While IsMoving()
Sleep(10) 'the sleep should not be needed if using one of the recent revisions of Mach
Wend
Code ("G1Z-5F40")
etc etc
You will may need to add spindle calls etc, all depends on how you want to do things and how your machine is setup.
I am not good enough at VB to rattle things off in seconds and it often takes me a few hours to do simple things I want to do but in the end it all works out and the sense of achievment is a nice thing for a thicko like me
Hood