Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 9 Ausserhalb des gültigen bereichs

Forumthread: Laufzeitfehler 9 Ausserhalb des gültigen bereichs

Laufzeitfehler 9 Ausserhalb des gültigen bereichs
26.01.2017 19:20:30
Heiko

Hallo zusammen.
Jetzt habe ich das eine Problem dank Eurer Hilfe lösen können, jedoch habe ich jetzt ein neues Problem.
Ich bekomme den laufzeitfehler 9 index außerhalb des gültigen bereichs
angezeigt.
Hat jemand einen Lösungsvorschlag?
Hier der Code

Sub Rechteck1_Klicken()
Dim i As Integer
For i = 1 To 74
Sheets(i).Select
'Wert Überprüfen und Drucken wenn Wert OK
If ActiveSheet.Range("Q13").Value = "Ja" Then
ActiveSheet.PageSetup.PrintArea = "$A$1:$M$124"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End If
Next i
End Sub

Vorab vielen Dank für Eure Hilfe

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Laufzeitfehler 9 Ausserhalb des gültigen bereichs
26.01.2017 19:34:13
Hajo_Zi
kann es sein das es nicht 74 Sheets gibt?
Kann es sein das es Diagrammsheets gibt?

AW: Laufzeitfehler 9 Ausserhalb des gültigen bereichs
26.01.2017 20:07:25
Luschi
Hallo Heiko,
... oder das nicht alle vorhandenen Sheets vom Typ 'xlWorksheet' sind, so daß die Range-Methode nicht vorhanden ist.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Laufzeitfehler 9 Ausserhalb des gültigen bereichs
26.01.2017 20:49:53
Heiko
Hallo.
Ja es sind 74 Sheets und nein es sind keine Diagramme dabei.
Es sind alle Blätter xlWorksheets
Gruß Heiko
AW: Laufzeitfehler 9 Ausserhalb des gültigen bereichs
26.01.2017 21:00:13
Gerd L
Hallo Heiko,
ich denke, so gibt es weniger Durcheinander.
Sub Rechteck1_Klicken()
Dim Wsh As Worksheet
For Each Wsh In ThisWorkbook.Worksheets
'Wert Überprüfen und Drucken wenn Wert OK
If Wsh.Range("Q13").Value = "Ja" Then
Wsh.PageSetup.PrintArea = "$A$1:$M$124"
Wsh.PrintOut Copies:=1, Collate:=True
End If
Next
End Sub
Gruß Gerd

  • Anzeige
    AW: Laufzeitfehler 9 Ausserhalb des gültigen bereichs
    26.01.2017 20:58:00
    Daniel
    Hi
    du hast vermutlich weniger als 74 Sheets.
    wenn du alle Blätter drucken willst, dann musst du die Anzahl nicht fix eingeben:
    
    For i = 1 to Sheets.Count
    
    da es in der Datei auch Diagrammblätter geben könnte, für die du das so nicht anwenden kannst, solltest du die Schleife auch nur über die Tabellenblätter (Worksheets) laufen lassen.
    Wenn du keine Diagrammblätter hast, funktioniert es mit Sheets genauso (Sheets sind Worksheets+Charts)
    For i = 1 to Worksheets.Count
    Worksheets(i).Select
    

    eleganter gehts mit der For Each-Schleife und selektieren muss man auch nicht.
    
    dim wsh as Worksheet
    for Each wsh in ActiveWorkbook.Worksheets
    if wsh.Range("Q13").value = "ja" then
    wsh.PageSetup.PrintArea = "$A$1:$M$124"
    wsh.PrintOut
    end if
    next
    
    Gruß Daniel
    Anzeige
    AW: Laufzeitfehler 9 Ausserhalb des gültigen bereichs
    27.01.2017 14:28:53
    Heiko
    Hallo.
    Vielen Dank.
    Dieser Code hat das Problem lösen können
    For i = 1 to Sheets.Count
    

    AW: Laufzeitfehler 9 Ausserhalb des gültigen bereichs
    26.01.2017 22:46:03
    Heiko
    Danke Euch. Ich werde die Makros morgen mal austesten.

    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    Laufzeitfehler 9 in Excel: Lösungen und Tipps


    Schritt-für-Schritt-Anleitung

    Wenn Du mit dem Laufzeitfehler 9 konfrontiert wirst, bedeutet dies in der Regel, dass ein Index außerhalb des gültigen Bereichs verwendet wird. Hier ist eine Schritt-für-Schritt-Anleitung zur Behebung dieses Problems in Deinem Excel-Makro:

    1. Überprüfe die Anzahl der Blätter: Stelle sicher, dass die Anzahl der Blätter in Deiner Arbeitsmappe korrekt ist. Verwende Sheets.Count, um die tatsächliche Anzahl zu überprüfen.

      For i = 1 To Sheets.Count
    2. Vermeide Diagrammblätter: Wenn Deine Arbeitsmappe Diagrammblätter enthält, kann dies zu einem Laufzeitfehler führen. Stelle sicher, dass Du nur mit xlWorksheets arbeitest.

      For Each Wsh In ThisWorkbook.Worksheets
    3. Überprüfe die Range: Stelle sicher, dass die Range, auf die Du zugreifst, auch tatsächlich existiert und dass das Blatt aktiv ist.

    4. Code anpassen: Hier ist eine robuste Version Deines Codes, die Fehler vermeidet:

      Sub Rechteck1_Klicken()
         Dim Wsh As Worksheet
         For Each Wsh In ThisWorkbook.Worksheets
             If Wsh.Range("Q13").Value = "Ja" Then
                 Wsh.PageSetup.PrintArea = "$A$1:$M$124"
                 Wsh.PrintOut Copies:=1, Collate:=True
             End If
         Next
      End Sub

    Häufige Fehler und Lösungen

    • Fehler: Laufzeitfehler 9 – Index außerhalb des gültigen Bereichs

      • Lösung: Überprüfe, ob Du versuchst, auf ein Blatt zuzugreifen, das nicht existiert. Verwende immer Sheets.Count oder Worksheets.Count.
    • Fehler: Vlookup führt zu einem Wert außerhalb des gültigen Bereichs

      • Lösung: Überprüfe die Suchkriterien und den Bereich, auf den Du zugreifst. Stelle sicher, dass die Daten vorhanden sind.

    Alternative Methoden

    Falls Du mit dem Laufzeitfehler 9 Schwierigkeiten hast, gibt es alternative Methoden, um das Problem zu umgehen:

    1. Mit For Each Schleife: Diese Methode ist einfacher und weniger fehleranfällig, da sie automatisch alle Worksheets durchläuft.

      For Each Wsh In ThisWorkbook.Worksheets
    2. Verwendung von Error Handling: Implementiere Fehlerbehandlung in Deinem VBA-Code, um Probleme eleganter zu handhaben.

      On Error Resume Next
      ' Dein Code hier
      On Error GoTo 0

    Praktische Beispiele

    Hier sind einige praktische Beispiele zur Veranschaulichung:

    • Drucken aller Blätter mit spezifischem Wert:

      Sub AlleDrucken()
         Dim Wsh As Worksheet
         For Each Wsh In ThisWorkbook.Worksheets
             If Wsh.Range("Q13").Value = "Ja" Then
                 Wsh.PrintOut
             End If
         Next
      End Sub
    • Fehlerbehandlung bei Zugriff auf Blätter:

      Sub FehlerBehandlung()
         Dim Wsh As Worksheet
         On Error Resume Next
         Set Wsh = ThisWorkbook.Worksheets("NichtVorhanden")
         If Wsh Is Nothing Then
             MsgBox "Das Blatt existiert nicht!"
         End If
         On Error GoTo 0
      End Sub

    Tipps für Profis

    • Verwende Option Explicit: Dies zwingt Dich, alle Variablen zu deklarieren, was die Fehlersuche erleichtert.

    • Nutze Debugging-Tools: Verwende die Debugging-Funktionen in VBA, um Deinen Code Schritt für Schritt zu überprüfen und Probleme schnell zu identifizieren.

    • Dokumentiere Deinen Code: Füge Kommentare hinzu, um die Funktionsweise Deines Codes zu erklären. Dies hilft nicht nur Dir, sondern auch anderen, die Deinen Code später lesen.


    FAQ: Häufige Fragen

    1. Was ist der Laufzeitfehler 9?
    Der Laufzeitfehler 9 tritt auf, wenn ein Index außerhalb des gültigen Bereichs verwendet wird, beispielsweise beim Zugriff auf ein nicht vorhandenes Blatt.

    2. Wie kann ich den Laufzeitfehler 9 in VBA vermeiden?
    Verwende Worksheets.Count, um die Anzahl der Arbeitsblätter zu überprüfen, und verwende For Each, um durch die Blätter zu iterieren, um Fehler zu minimieren.

    3. Was bedeutet "Index außerhalb des gültigen Bereichs"?
    Dies bedeutet, dass Du versuchst, auf ein Element zuzugreifen, das nicht existiert, wie ein Blatt oder eine Zelle, die nicht im aktuellen Kontext verfügbar ist.

    4. Können Diagrammblätter den Laufzeitfehler 9 verursachen?
    Ja, Diagrammblätter können diesen Fehler verursachen, wenn Du versuchst, auf sie zuzugreifen, als wären sie normale Worksheets.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige