2016-08-16 1 views
0

Ich versuche, alle Blätter, die von Sheet5 zum letzten Blatt starten, aber ich habe "Laufzeitfehler Index außerhalb des Bereichs" zu löschen.Excel VBA löschen Blätter Run-Time-Fehler Index außerhalb des Bereichs

Das Ergebnis wurde gelöscht, aber nur Sheet5, Sheet7 und Sheet9 aber Sheet6 und Sheet8 immer noch dort. Gray Debug-Button und ich frage mich, wo der Fehler ist. Bitte helfen Sie, denn kämpfen Sie weiter und können nicht durchkommen. Vielen Dank!

Antwort

1

Ich bin ziemlich sicher, dass es ein Problem in Ihrer Logik des Löschens der Blätter ist. Am Anfang der Schleife ThisWorkbook.Sheets(x).Delete wird Sheet5 löschen.

Sobald Sheet5 jedoch gelöscht wird, wird Sheet6 ersetzt, sodass ThisWorkbook.Sheets (5) Sheet6 entspricht.

Ihr Zähler ist zu diesem Zeitpunkt jedoch x = 6, so dass Sheet7 gelöscht wird, das sich an Position ThisWorkbook.Sheets (6) befindet.

Blatt 8 wird seinen Platz einnehmen und Ihr Zähler wird an diesem Punkt x = 7 sein. Dies wird Sheet9 löschen, das sich an Position ThisWorkbook.Sheets (7) befindet.

Der Zähler wird x = 8 jetzt sein und der Code wird versuchen ThisWorkbook.Sheets (8), jedoch zu löschen, dieses Arbeitsblatt existiert nicht -> Subscript out of Range

+0

hinzugefügt werden, VBA wird lösche das Blatt, das sich an dieser Position befindet. Wenn also die Blätter zusammengemischt oder benannt werden, wird das Blatt, das sich in der Position 5 befindet, als Start gelöscht. – DragonSamu

+0

Vielen Dank an @daZza Ich habe nicht realisiert, nachdem gelöscht Sheet5, Sheet6 wird Sheet5, so dass ich nur löschen Sheet5 mit Loop-Methode. –

+0

Stimmt, ich dachte, es wäre kompliziert: P – daZza

Verwandte Themen