If your macros are all internal and private, then no-one needs to know what they are called.

I generally prefix my subroutines with an "s" and give a descriptive name. So, I might have
Private Sub sCreateInvoice()
Now, if anyone can accidentally type that without knowing it's there, I'd be amazed. If you have a "main" subroutine that calls other subroutines and functions, you could make the name of the main routine very obtuse so that no-one can/will type it by accident, and you could set a global boolean variable to indicate that the main routine is being executed. All the other routines could check if that boolean variable is set to true and exit if it isn't.

And, has been said, if a routine has a dependency on a specific worksheet, ensure that the code relates only to that worksheet. Note that the worksheet does not have to be active/selected, just that all references are fully qualified.

Regards, TMS