Wir haben eine Arbeitsmappe mit Makros (Version 2010), die viele Leute verwenden. Einige dieser Leute haben Makros in ihrer Arbeitsmappe Personal.xlsb. Wir haben eine Situation, in der das Makro in der freigegebenen Arbeitsmappe denselben Namen hat wie ein Makro in persönlichen Arbeitsmappen, aber leicht unterschiedliche Dinge tut.
Um die Ausführung des falschen Makros zu vermeiden, möchte ich die freigegebene Arbeitsmappe standardmäßig so einrichten, dass Makros aus dieser Arbeitsmappe und nicht aus allen geöffneten Arbeitsmappen ausgeführt werden. Ich gehe davon aus, etwas darin zu platzieren WorkBook_Open()
, aber was?
Gibt es eine Möglichkeit, die Standardoption für Makros in: All Open Workbooks
in zu ändern This Workbook
?
Antwort1
Könnt ihr das Makro in der freigegebenen Arbeitsmappe einfach umbenennen und die Instanzen dieses Makros in dieser bestimmten Arbeitsmappe ersetzen?
Antwort2
Wenn ich die Module umbenenne, die die Unterprogramme enthalten, kann ich genau angeben, welches Unterprogramm aufgerufen werden soll.
Beispiel:
In Modul1, umbenannt in LocalModule1, habe ich:
Sub TestDupe()
Call LocalModule1.DuplicateName
End Sub
Public Sub DuplicateName()
ActiveSheet.UsedRange
MsgBox ("new mod 1")
End Sub
In Module2, umbenannt in LocalModule2, habe ich
Public Sub DuplicateName()
ActiveSheet.UsedRange
MsgBox ("mod 2")
End Sub
Indem ich den Qualifizierer im Aufruf von LocalModule1
in ändere LocalModule2
, kann ich jetzt bestimmen, welche gleichnamige Subroutine ausgeführt werden soll.