AW: 2 Dateien, 2 Subs, gleicher Shortcut
24.09.2009 18:09:47
Wilhelm
Hallo Kawensmann, danke für Ihre Mühe mit meinem Problem!
Habe die Erläuterung gelesen und konnte jetzt testen, dass es tatsächlich die Reihenfolge ist, in der die Dateien geöffnet werden. Bei meinen Tests von früher hatte ich zwar die Dateien in unterschiedlicher Reihenfolge geöffnet und geschlossen, dabei aber die Applikation Excel selbst nicht beendet. Excel merkt sich offenbar die Reihenfolge des ersten Öffnens und behält diese, auch wenn die Dateien zwischendurch wieder geschlossen werden. Wenn ich aber auch die Applikation Excel wieder schließe und dann die Dateien unterschiedlich öffne, wird immer das Sub aus der zuerst geöffneten Datei ausgeführt.
Allerdings gelingt es mir nicht, den Tip aus den Erläuterungen
(Have each macro check the name of the active workbook. If the name matches the expected name for that macro, then the code can continue to execute. If it does not match, then the code can activate the other workbook and directly run the macro in that one.)
umzusetzen:
Ich habe die Dateien "Test1.xls" und "Test2.xls". Beide enthalten das Sub "Test1" bzw Test2, welches mit dem gemeinsamen Shortcut gestartet werden soll. Ich habe folgenden Code geschrieben:
In "Test1.xls":
Public Sub Test1()
Dim X As Variant, W As Variant
W = ActiveWorkbook.Name
If W = "Test2.xls" Then Call Test2: Exit Sub
X = MsgBox("Test1", vbOKOnly)
End Sub
In "Test2.xls":
Public Sub Test2()
Dim X As Variant, W As Variant
W = ActiveWorkbook.Name
If W = "Test1.xls" Then Call Test1: Exit Sub
X = MsgBox("Test2", vbOKOnly)
End Sub
Leider funktioniert das so nicht.
Wenn "Test1.xls" als erstes geöffnet wurde und ich den Shortcut betätige, so springt das Programm in das Sub Test1(), führt dieses aber nicht aus sondern markiert "Call Test2" und zeigt die Fehlermeldung "Sub oder Function nicht definiert". Klar, in "Test1.xls" gibt es diese Sub nicht.
Wenn ich beiden Subs den gleichen Namen gebe, so ist alles ok, wenn ich den Shortcut bei aktivem "Test1.xls" betätige, es wird die MessageBox "Test1" angezeigt. Wenn ich aber den Shortcut bei aktivem "Test2.xls" betätige, stoppt das Programm bei dem Befehl "Call Test" und zeigt die Meldung "Laufzeitfehler 28: Nicht genügend Stapelspeicher". Offenbar will das Sub sich selbst aufrufen.
Wie also kann ich aus Sub Test1 das Sub Test2 in der zweiten Datei aufrufen?
Können Sie meinen Code entsprechend korregieren?
Herzliche Grüße
Wilhelm