set wb=Workbooks(Datei) ergibt Laufzeitfehler 9 (Index außerhalb des gültigen Bereichs)

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Franziska.

    set wb=Workbooks(Datei) ergibt Laufzeitfehler 9 (Index außerhalb des gültigen Bereichs)

    Hallo Ihr Lieben,


    bestimmt könnt Ihr mir weiterhelfen.
    Ich möchte eine Datei öffnen und in dieser dann leere Zeilen löschen. Dazu habe ich fogende Excel-VBA-Code erdacht:

    Sub Ellipse1_Klicken()
    'On Error Resume Next
    'Application.ScreenUpdating = False

    Dim Pfad As String
    Dim Datei As String
    Dim Arbeitsblatt As String
    Dim Spalte As String
    Dim Schliessen As String

    Dim LetzteZeile As Integer
    Dim i As Integer
    Dim wb As Workbook

    Pfad = "C:\Users\Franziska\Desktop" 'Tabelle1.Cells(2, 2).Value
    Datei = "Xxxxxxxxx_Customer - Balance to Date 2018 12 31_bearbeitetSAB.xlsx" 'Tabelle1.Cells(3, 2).Value
    Arbeitsblatt = "Customer - Balance to Date 2018" 'Tabelle1.Cells(4, 2).Value
    Spalte = "C" 'Tabelle1.Cells(5, 2).Value


    Set wb = Workbooks(Datei)
    If wb Is Nothing Then Workbooks.Open Filename:=Pfad & "\" & Datei
    LetzteZeile = Cells(Rows.Count, Spalte).End(xlUp).Row
    For i = LetzteZeile To 2 Step -1
    If Cells(i, Spalte) = "" Then Rows(i).Delete
    Next i
    If MsgBox("Soll die Datei geschlossen werden?", Buttons:=vbYesNo) = vbYes Then Workbooks(Datei).Close
    Application.ScreenUpdating = True
    End Sub


    Bei "If wb is Nothing " mckert er: Laufzeitfehler 9, Index außerhalb des gültigen Bereichs.....

    Wo liegt mein Fehler??

    Lieben Dank für Eure Hilfe!
    Franziska
    Hallo!

    Die Meldung entsteht weil "Workbooks(Datei)" nicht existiert bzw. fehlerhaft ist. Eine nicht geöffnete Datei kann auch nicht gesettet werden.

    Anders so (zum einfacheren Testen Beispielcode gekürzt):

    Visual Basic-Quellcode

    1. Dim Pfad As String
    2. Dim Datei As String
    3. Dim Arbeitsblatt As String
    4. Dim Spalte As String
    5. Dim Schliessen As String
    6. Dim LetzteZeile As Integer
    7. Dim i As Integer
    8. Dim wb As Workbook
    9. Dim wbCount
    10. Dim wbYes As Boolean
    11. Datei = "Test35.xlsb"
    12. For Each wbCount In Workbooks
    13. If wbCount.Name = Datei Then
    14. Set wb = Workbooks(Datei)
    15. wbYes = True
    16. Exit For
    17. End If
    18. Next
    19. If Not wbYes Then
    20. Workbooks.Open (Datei)
    21. wbYes = False
    22. End If


    Zeile 17 kannst Du auch weglassen, da ich in Deinem Code nicht sehe dass Du "wb" weiter nutzt.

    Gruß, René