falscher Code wird ausgeführt (ThisWorkbook)
16.11.2017 13:35:01
Burkhard
ich habe ein ähnliches Problem wie alex vor ein paar Jahren (https://www.herber.de/forum/archiv/1136to1140/1137165_Makro_auf_Arbeitsmappe_beschraenken.html#1137165), aber keine Lösung dazu.
Ich habe mehrere Excel-Dateien - beschränken wir uns mal auf DateiA und DateiB. Der VBA-Code in beiden Dateien ist zu 99% identisch.
Wenn beide Dateien geöffnet sind, kann es vorkommen, dass ich aus DateiA (über ein eigenes Menü) eine Funktion aufrufe, diese aber in DateiB ausgeführt wird. Dumm ist, dass dann die Daten in DateiB verwendet (und geändert!) werden. Ganz gemein ist das, wenn DateiB geschlossen wurde - Excel macht sie dann ganz ungeniert wieder auf und führt den Code dort aus.
Ich weiß, dass das mit ActiveWorkbook bzw. ThisWorkbook zu tun hat. Der Code wird in ThisWorkbook ausgeführt. Wie kann das aber noch einen Inhalt haben, wenn die Datei (DateiB) geschlossen ist? Wann wird ThisWorkbook überhaupt gesetzt?
Eigentlich müsste ich jetzt vor jeder Funktion, die über das Menü aufgerufen werden kann, ActiveWorkbook mit ThisWorkbook vergleichen und bei Ungleichheit ThisWorkbook (das falsche - die geschlossene DateiB) auf das richtige (DateiA, von der aus die Funktion gestartet wurde) sozusagen "umschalten". Geht das überhaupt? Wenn ja: wie? So etwas wie "Set ThisWorkbook = ActiveWorkbook" funktioniert ja nicht (verständlicherweise).