Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Laufzeitfehler 9

VBA Laufzeitfehler 9
23.05.2019 10:14:18
Jenny
Hallo zusammen,
ich schreibe gerade einen VBA-Code über einen CommandButton, der im Abgleich einer Liste mir _
die Tabellenblätter löscht, deren Name in der Liste enthalten ist:

Private Sub CommandButton2_Click()
Dim i As Integer
Dim j As Integer
Dim leer As Boolean
Application.DisplayAlerts = False
For i = 1 To Worksheets.Count
j = 0
leer = False
Do While sheets("Übersicht").Range("H3").Offset(j, 0)  ""
If leer = False Then
If sheets(i).Name = sheets("Übersicht").Range("H3").Offset(j, 0) Then
sheets(i).Delete
leer = True
End If
End If
j = j + 1
Loop
Next i
Application.DisplayAlerts = True
End Sub

Dabei taucht der Laufzeitfehler 9: Index außerhalb des gültigen Bereichs auf.
Probleme hat der mit dem "Sheets(i).Name = Sheets....", wenn ich dort im Code auf Details gehe, kommt die Info "Bezeichner unter dem Cursor nicht gefunden".
Das komische ist aber, dass er mir den Code eigentlich bis auf die Meldung am Ende fehlerfrei ausführt, d.h. es werden alle gewünschten Tabellenblätter wie geplant gelöscht.
Wisst ihr, wo das Problem genau liegt, bzw. wie man die Fehlermeldung unterdrücken kann? Durch das "application.Displayalerts" funktioniert das leider nicht.
Vielen Dank!
Jenny
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Laufzeitfehler 9
23.05.2019 10:19:24
Nepumuk
Hallo Jenny,
wenn die Mappe 5 Tabellen hat und du löschst die 3. dann hat sie nur noch 4 Tabellen. Was denkst du passiert wenn du den Namen der 5. Tabelle abfragst die es ja nicht mehr gibt?
Lösche von hinten nach vorne, dann klappt's.
Gruß
Nepumuk
AW: VBA Laufzeitfehler 9
23.05.2019 10:49:24
Jenny
Vielen Dank!!!
Habe jetzt die For-Schleife umgekehrt und es funktioniert!! :)
Anzeige
AW: VBA Laufzeitfehler 9
23.05.2019 10:27:00
Daniel
Hi
in dem Fall würde ich einfach über die Liste laufen und das jeweilige Blatt löschen.
den Fehler, wenn das zu löschende Blatt nicht vorhanden ist, kannst du einfach ignorieren, denn ob das Blatt jetzt nicht mehr da ist, weil du es gelöscht hast oder weil es noch nie da war, ist ja egal, das Ergebnis ist das gleiche
dim Zelle as Range
With Sheets("Übersicht")
for each Zelle in Range(.Range("H3"), .Range("H3").end(xldown))
on Error Resume next
Sheets(Zelle.Text).Delete
on Error Goto 0
next
End with

Gruß Daniel
Anzeige
AW: VBA Laufzeitfehler 9
23.05.2019 11:12:44
Jenny
Vielen Dank,
ich habe jetzt die Lösung mit der umgekehrten For-Schleife ausprobiert und das klappt.
Deinen Vorschlag kann ich bestimmt irgendwann bei einem anderen Problem nutzen.
Danke!
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige