Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1788to1792
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
Inhaltsverzeichnis

Laufzeitfehler 9

Laufzeitfehler 9
02.11.2020 10:02:22
Solari
Hallo zusammen,
aktuell stellt sich mir ein Problem, das ich nicht recht verstehe und daher auch nur schwer wiedergeben kann. Grob gesagt: Ich habe mir vor mehreren Jahren ein Makro gebastelt und es hat auch lange Zeit getan, was es sollte. Plötzlich bekomme ich aber folgende Fehlermeldung:
"Laufzeitfehler '9': Index außerhalb des gültigen Bereichs"
Ich bin der Meinung diese Fehlermeldung durchaus zu verstehen. Offenbar versucht hier Excel auf etwas zuzugreifen, das er anhand der angegebenen Parameter nicht finden kann. Wenn ich z.B. einen S-Verweis nutzen würde und den Bereich über Spalte 1 - 9 definiert habe, dann aber als Spaltenindex 10 angebe, müsste das doch ein Laufzeitfehler 9 sein.
Hier mein Code:
Sub JanuarMitarbeiterAuslesen()
Application.ScreenUpdating = False
Application.EnableEvents = False
Workbooks.Open (ThisWorkbook.Path & "\MitarbeiterzahlenGruppe_01_2020.xls")
Dim Zeile As Long
Dim ZeileDarunter As Long
Dim LetzteZeile As Long
Dim Einf?gzeile As Long
With Worksheets(1)
LetzteZeile = .Cells(Rows.Count, 1).End(xlUp).Rows.Row
For Zeile = LetzteZeile To 1 Step -1
If .Cells(Zeile, 1).Value = Workbooks("zz Automatisches Einlesetool").Worksheets(1). _
Cells(2, 4) Then
Einf?gzeile = 6
ZeileDarunter = Zeile + 1
Do While .Cells(ZeileDarunter, 1)  0
.Rows(ZeileDarunter).Copy
Workbooks("zz Automatisches Einlesetool").Worksheets(1).Cells(Einf?gzeile, 1). _
PasteSpecial xlPasteValues
Einf?gzeile = Einf?gzeile + 1
ZeileDarunter = ZeileDarunter + 1
If .Cells(ZeileDarunter, 1) = 0 Then
.Cells(ZeileDarunter, 7).Copy
Workbooks("zz Automatisches Einlesetool").Worksheets(1).Cells(2, 2).PasteSpecial   _
_
xlPasteValues
End If
Loop
End If
Next Zeile
End With
Workbooks("MitarbeiterzahlenGruppe_01_2020.xls").Close SaveChanges:=False
Application.EnableEvents = True
Worksheets(1).Select
End Sub

Die Zeile, in der die Fehlermeldung auftritt, habe ich fett markiert.
Das Makro befindet sich übrigens in der Datei "zz Automatisches Einlesetool". Es öffnet die Mitarbeiterliste, sucht dort nach dem Kriterium, das in Zelle 2,4 des Einlesetools steht, kopiert die entsprechenden Zeilen aus der Mitarbeiterliste und fügt sie im Einlesetool ein.
Wenn das Makro läuft, sind also sowohl das automatische Einlesetool als auch die Mitarbeiterliste (sobald sie durch das Makro geöffnet wurde) geöffnet.
Die "gängigen" Fehler können m.E. ausgeschlossen werden. Die Dateien gibt es, sie wurden nicht umbenannt, verschoben usw.
Ich bin mir nicht sicher ob Relevanz besteht, aber seit dem letzten Ausführen des Makros habe ich einen neuen Laptop erhalten. Betriebssystem (Windows 10) und Excel-Version (Professional Plus 2016) sind unverändert geblieben.
Kann es sein, dass es irgendeine Art von Update gab, das nun verhindert, dass Excel zwischen den Dateien springt, bzw. mein Code es updatebedingt nicht mehr richtig deklariert?
Ich bin an der Stelle echt ratlos. Diverse Versuche den Code abzuwandeln indem ich "With Worksheets" durch den vollen Namen ersetze, die Tabellenblätter mit Namen anspreche und nicht mehr mit Index, usw. haben nicht zum gewünschten Erfolg geführt. Ich kann auch nicht nachvollziehen, was genau an der Stelle das Problem ist.
Habt ihr irgendwelche Ideen?
Gruß,
Solari

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 9
02.11.2020 10:08:44
Daniel
Hi
Das trifft halt auch zu, wenn du versucht ein Workbook oder Worksheet über einen Namen anzusprechen, den es nicht gibt oder der falsch geschrieben ist.
So enthält der Worbookname normalerweise auch die Dateierweiterung.
Gruß Daniel
AW: Laufzeitfehler 9
02.11.2020 10:22:32
Solari
Hallo Daniel,
vielen Dank für deine Antwort und die zeitgleiche Lösung meines Problems :)
Ich komm mir schon fast dumm vor, dass es so einfach zu lösen war. Aber auf die Idee bin ich nicht gekommen, da das Makro die letzten Jahre auch so gelaufen ist. Verrückt, aber wieder was gelernt.
Tausend Dank!
Gruß,
Solari
AW: Laufzeitfehler 9
02.11.2020 10:43:12
Daniel
Es ist in Windows ja per Einstellung möglich, im Explorer die Dateiendung nicht anzeigen zu lassen.
Durchaus möglich, dass hier eine Querverbindung besteht und sich diese Einstellung auch auf die Workbooknamen in Excel auswirkt, mit den entsprechenden Auswirkungen auf den Code.
Ich halte es für sinnvoller, innerhalb des Makros geöffnete Dateien gleich einer Variable zuzuweisen und diese zu verwenden:
Set wbX = Workbooks.open(Dateiname)
Die Referenz auf das eigene Workbook also das mit dem Makro macht man immer mit ThisWorkbook, dann ist man vom Dateinamen unabhängig.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige