Ich weiss nicht weiter, immer Laufzeitfehler 9!

gerdschmidtke

Grünschnabel
Hallo. Ich habe ein kleines Problem in Visual Basic (VBA). Ich programmiere gerade für EXCEL eine Eingaberoutine. Dort ist auch eine Funktion enthalten, die Tabellenblätter löscht. So weit funktioniert auch alles gut. Alle Tabellenblätter habe ich in einem versteckten Tabellenblatt mit dem Namen "Konstanten" gespeichert.

Nun möchte ich eine Routine schreiben, die beim Löschen eines Tabellenblattes den Eintrag aus dem Tabellenblatt "Konstanten" löscht und die nachfolgenden Einträge um jeweils eine Zelle nach oben kopiert.

Ich habe die Gesamteinträge auf 20000 festgelegt. Die Routine steht zwar schon, aber beim Testlauf wird immer ein Fehler angezeigt: Laufzeitfehler 9: "Index außerhalb des gültigen Bereichs"

Ich schaue mir schon den Programmcode an, aber ich weiss nicht mehr weiter. Vielleicht kann mir jemand helfen. Hier ist der Programmcode: In der Variablen "titel" steht das zu löschende Tabellenblatt.

For i = 2 To 20000
If Worksheets("Konstanten").Cells(i, 1) = titel Then
Worksheets("Konstanten").Cells(i, 1) = ""
For j = i To 20000
If Worksheets("Konstanten").Cells(j + 1, 1) = "" Then
Exit For
Else
Worksheets("Konstanten").Cells(j, 1) = Worksheets("Kontanten").Cells((j + 1), 1)
End If
Next j
Exit For
End If
Next i

Bitte helft mir.

Vielen Dank im voraus.
 
Hi, entweder der Fehler kommt daher, weil er "Worksheets("Kontanten").Cells((j + 1), 1)" nicht findet (Index KONtANTEN), also falsch geschrieben, oder du darfst nicht so einen hohen schleifenwert nehmen (20000 - da wird dein rechner lange rödeln.)

also erstens: index richtig schreiben
zweitens: versuch mal schleifenwert 100 oder so
 
Danke für die Hilfe. Ich habe alles noch einmal geprüft. Der Name "Konstanten" ist in jedem Fall richtig geschrieben. Ich habe es ja auch geschafft, aus einer Tabelle mit mindestens 40000 Einträgen gezielt Einträge zu löschen und da ist der Laufzeitfehler nicht aufgetreten. Hier weiss ich jedoch nicht weiter. Kann mir jemand hierfür eine Lösung anbieten? Danke im voraus.

Gerd
 
Ich habe in Excel ein VBA geschrieben, mit dem Daten in ein Tabellenblatt eingegeben, ausgegeben, ausgewertet werden können. Und nun möchte ich eine Funktion einbauen, mit der ein Tabellenblatt gelöscht wird.

Alle benutzten Tabellenblätter werden auf einer versteckten Seite mit dem Namen "Konstanten" gespeichert. Aus einer Combobox heraus soll das zu löschende Tabellenblatt auszuwählen sein und anschließend auch gelöscht werden. Nur weiss ich hier nicht weiter, wie ich das machen soll. :confused:
 
Zurück