Objekt-Verweise gehen verloren bei Application.Run
18.06.2008 17:16:00
Kolja
ich habe mal wieder ein sehr spezielles Problem:
In einer Excel-Datei werden in der Workbook_Open-Prozedur zwei Verweise auf Arbeitsblatt-Objekte in
Objektvariablen gespeichert :
Private Sub Workbook_Open()
Dim lastVersion As String
Dim lastSaveDate As String
' Worksheet-Objekte in Variablen speichern
Set ws_ml = ThisWorkbook.Worksheets(WS_Masterlist)
Set ws_history = ThisWorkbook.Worksheets("Historie")
.
.
.
Diese Verweise werden (zwecks Abkürzung der Arbeitsblatt-Qualifizierung) in etlichen anderen Makros in der Arbeitsmappe benutzt. Dies funktioniert eigentlich auch einwandfrei.
Nun existiert eine zweite Excel-Mappe, die dazu dient, verschiedene administrative Dinge innerhalb der oben genannten Excel-Datei zu verändern (u.A. eine rudimentäre Benutzer-/Berechtigungsverwaltung).
Dies bringt mehrmaliges Aktivieren/Deaktivieren der Datei 1 mit sich, und dabei wird natürlich jedesmal das entsprechende Ereignis "Workbook_Activate" der Datei 1 gefeuert. Beim ausführen des Event-Handlers wird innerhalb Datei 1 ein Makro aufgerufen, in welchem die genannten Objektvariablen verwendet werden:
currentTBK_Split = Split(ws_ml.Cells(currentTBK_StartRow, 1).Value, Chr(10))
^
^
An dieser Stelle bricht die Ausführung ab mit dem Hinweis "Objektvariable oder With-Blockvariable nicht festgelegt".
Warum ist das so? Offensichtlich werden die Verweise im Kontext der Datei 1 irgendwann zurückgesetzt.
Hat jemand eine Idee?
Der Fehler macht mir ziemliche Probleme, ich habe auch keine brauchbare Möglichkeit gefunden, ihn zu umgehen.
Ich habe auch schon versucht, diesen durhc mehrmaliges hin- und herschalten zwischen Datei 1 und einer beliebigen anderen Arbeitsmappe zu reproduzieren, ohne Erfolg.
Ich habe lange Zeit gedacht, das das Phänomen aufgrund mehrmaligen An-/Abschaltens der Events (Application.EnableEvents) entsteht. Jedoch ist sichergestellt, daß die Datei 1 durch Datei 2 mit angeschalteten Events geöffnet wird.
Hoffentlich hat jemand eine Idee!
Schönen Gruß,
Kolja