Wenn ich diesen Code manuell oder über die Taste F5 ausführe, wird der Laufzeitfehler 9: "Index außerhalb des Bereichs" angezeigt. Dies liegt an der Arbeitsmappe, auf die ich mich beziehe, die entweder noch nicht geöffnet ist oder überhaupt nicht existiert. VBA-Indexfehler in Arrays
Wenn Sie das Array als dynamisches Array deklarieren und das Wort DIM oder REDIM in VBA nicht verwenden, um die Länge eines Arrays zu definieren, wird normalerweise ein VBA-Indexfehler außerhalb des Bereichs angezeigt. Schauen Sie sich zum Beispiel den folgenden Code an. Sub Macro3 () Dim MyArray () Solange MyArray (1) = 25 End Sub
Oben habe ich die Variable als Array deklariert, aber keinen Start- und Endpunkt zugewiesen. Vielmehr habe ich dem ersten Array sofort den Wert 25 zugewiesen. Wenn ich diesen Code mit der Taste F5 oder manuell ausführe, wird der Laufzeitfehler 9 angezeigt: "Index außerhalb des Bereichs". Um dieses Problem zu beheben, muss ich die Länge eines Arrays mithilfe des Redim-Wortes zuweisen.
- Laufzeitfehler 91 vba
- Excel vba laufzeitfehler 9
Laufzeitfehler 91 Vba
Hallo zusammen,
ich habe mich hier angemeldet weil ich aktuell ein kleines Problem mit einer widerspenstigen VBA Programmierung habe und ich anscheinend zu Blöd bin den Fehler zu finden. Ich hoffe hier den einen hilreichen Hinweis zu finden. Kurz zu meinem Problem:
Ich bin aktuell dabei eine Excel Datei mit Formularen zu versehen. Unter anderem auch mit einem Formular mit dem man Datensätze in der Tabelle suchen, ändern und wieder speichern kann. Ich habe allerdings ein Problem mit dem Suchfeld. Solange ich nach Textinhalten (z. B. Test) suche funktioniert alles Bestens, sobald ich aber nach Numerischen Inhalten (z. 1234) suche bekomme ich die Fehlermeldung "Laufzeitfehler 9 Index außerhalb des gültigen Bereichs". Ich hatte ursprünglich vermutet das es etwas mit der Formatierung der Tabellenfelder zu tun haben könnte. Aber eine Änderung der Formatierung hat auch keine Besserung gebracht. Hier noch der Ausschnitt aus dem Code:
Option Explicit
Dim Anz%, Zeile%, Data
Private Sub cmdSuche_Click()
Dim i%, found As Boolean
found = False
For i = 1 To Anz
If = Data(i, 2) Then <<<<<<<<<<<<< Das ist das Suchfeld
Zeile = i + 1
= "Gefunden in Zeile " & Zeile
= Data(i, 1)
= Data(i, 3)
= Data(i, 4)
= Data(i, 5)
= Data(i, 6)
= Data(i, 7)
= Data(i, 8)
found = True
Exit For
End If
Next i
If found Then
txtDatum.
Excel Vba Laufzeitfehler 9
10. 01. 2017, 17:51
# 1
Neuer Benutzer
Registrierung: 04. 02. 2013
Karma:
VBA - Laufzeitfehler 9
Hallo Helfer,
als früherer Delphi-Entwickler habe ich "gelegentlich" Probleme mit VBA-Fehlermeldungen
So auch jetzt bei einem kleinen Makro, das ein festes Formular in weitere Arbeitsblätter kopiert und dabei für einen variablen Datumsbereich neben dem Einfügen eines Datums in eine Zelle eben dieses Datum auch als Namen des Arbeitsblattes festlegt. Am Schluss speichere ich das Ergebnis unter einem anderen Namen ab und schließe die Ursprungsdatei unverändert, da sie immer wieder quasi als Grundlage dienen soll. Die letzte Codezeile ruft den Laufzeitfehler 9 auf (Index außerhalb des gültigen Bereichs). Das irritiert mich insofern, als da eigentlich aus meiner Sicht gar kein Index vorhanden ist. Habe ich da Tomaten auf den Augen - oder was passiert da?
3a2920576572206973742064656e20646120736f206e65756769657269672e
16. 2014, 12:39
# 3
Hallo,
danke schonmal, das ist tatsächlich ein Fehler (Die Ursprungsblätter heißen Tabelle1, die Zielblätter MitarbeiterZeiten). Aber bis dahin kommt es leider nicht mal, der Fehler liegt schon beim zuweisen der LetzteZeileImport. 16. 2014, 12:50
# 4
Hi
Dim wb As Workbook, wbOpen As Workbook
Set wbOpen = (sFile)
LetzteZeileImport = heets("Tabelle1")(, 1)(xlUp)
'stimmt das??? 'die Blattnamen noch ändern. Worksheets("MitarbeiterZeiten")(SchreibCounter, 1) = heets("Tabelle1")(x, 1). Worksheets("MitarbeiterZeiten")(SchreibCounter, 2) = heets("MitarbeiterZeiten")(x, 3). Worksheets("MitarbeiterZeiten")(SchreibCounter, 3) = heets("MitarbeiterZeiten")(7, 3). Worksheets("MitarbeiterZeiten")(SchreibCounter, 4) = Right(heets("MitarbeiterZeiten")(7, 1), 4). Worksheets("MitarbeiterZeiten")(SchreibCounter, 5) = heets("MitarbeiterZeiten")(x, 5). Worksheets("MitarbeiterZeiten")(SchreibCounter, 6) = heets("MitarbeiterZeiten")(x, 6)
nicht getestet aber geht es so?