Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
372to376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
372to376
372to376
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Aktualisierung VBE

Aktualisierung VBE
02.02.2004 12:48:36
Bernd
Kennt jemand den folgenden Effekt und die passende Lösung?
Durch eine Excel-VBA-Routine werden in einer anderen (offenen) Excel-Datei, die durch "Programmdatei" referenziert wird, mit
(1. Schleife)
For Each Blatt In Programmdatei.Sheets
hier bestimmte Aktionen durchführen
Next Blatt
bestimmte Aktionen ausgeführt. Dann werden Blätter, die einem bestimmten Kriterium entsprechen, durch folgende Anweisungen gelöscht:
(2. Schleife)
For Each Blatt In Programmdatei.Sheets
If Kriterium=TRUE _
Then
Blatt.Delete
End If
Next Blatt
Dies funktioniert problemlos.
Danach sollen Aktionen mit den VB-Komponenten des VB-Projekts von "Programmdatei" durchgeführt werden
(3. Schleife)
Set VBA_Projekt = Application.VBE.VBProjects(Programmdatei.VBProject.Name)
For Each Komponente In VBA_Projekt.VBComponents
hier bestimmte Aktionen ausführen
Next Komponente
Dies läuft auf misteriöse Fehler. Bei Analyse stellt man fest, daß im VBA-Editor auch nach dem Löschen der Blätter diese offenbar noch als VB-Komponenten existieren und angezeigt werden. Dadurch greift man in der 3. Schleife mit
For Each Komponente In VBA_Projekt.VBComponents
offenbar auf eigentlich nicht mehr exisierende Komponenten/Blätter? zu, was natürlich seltsame Fehler hervorrufen kann.
Verblüffenderweise funktioniert der Code jedoch völlig einwandfrei, wenn man ihn im Einzelschrittmodus ausführt. Dann wird nämlich (genau wie man auch erwarten sollte) nach jedem
Blatt.Delete
die entsprechende VB-Kompnente auch aus dem Projektfenster des VBA-Editors entfernt. Dieses "Phenomen" tritt aber überhaupt nur dann auf, wenn man vor der zweiten Schleife (z. B. in der 1. Schleife) auf die Blätter der Auflistung explizit zugegriffen hat (z. B. durch msgbox(Blatt.Name)). Die VB-Komponenten aller Blätter, auf die man nicht zugegriffen hat, werden auch ohne Einzelschrittmodus einwandfrei aus dem Projektfenster des VBA-Editors entfernt.

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktualisierung VBE
02.02.2004 22:28:28
Horst
Ich hab es mal versucht, das ist nicht nachzuvollziehen!
Horst

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige