Generally speaking:
Once a macro starts, it continues to the end.
If the macro is triggered again before it finishes, it starts again from the beginning. (Off the top of my head, I'm not sure if that means there are two instances of the macro running now, or just one that started at the top. Maybe someone else can clarify that.)
To keep a macro from re-triggering when it's already running, you can check either a flag or a module's status at the beginning of the macro and only continue if the flag is / is not set, or the module is on / off (your choice). Obviously, if the macro checks these and decides to run, you need to set or clear the flag, or issue a command to turn the module on or off as the second step in the macro so that if it gets triggered again, it will see that it is already running. Also on any exit of the macro, you will have to change the flag or module status back, to show the macro is not running, otherwise, it will never run again.
Clear as mud?