Microsoft Excel

Herbers Excel/VBA-Archiv

Laufzeitfehler 9

Betrifft: Laufzeitfehler 9 von: Solari
Geschrieben am: 02.11.2020 10:02:22

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

Betrifft: AW: Laufzeitfehler 9
von: Daniel
Geschrieben am: 02.11.2020 10:08:44

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

Betrifft: AW: Laufzeitfehler 9
von: Solari
Geschrieben am: 02.11.2020 10:22:32

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

Betrifft: AW: Laufzeitfehler 9
von: Daniel
Geschrieben am: 02.11.2020 10:43:12

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

Beiträge aus dem Excel-Forum zum Thema "Laufzeitfehler 9"