Application.GetOpenFilename Fenster, Fehler beim Auswahl von Abbrechen

  • Excel

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Application.GetOpenFilename Fenster, Fehler beim Auswahl von Abbrechen

    Ich habe ein Excel VBA Script erstellt, das mehrere Dateien zusammenführt, das funktioniert gut, nur "Abbrechen" im Auswahlfenster tut nicht ("Typen unverträglich"). Anschließend habe ich "If var = False Then Exit Sub" hinzugefügt, jetzt funktioniert "Abbrechen", dafür meldet LBound(var) und UBound(var): "Typen unverträglich" und Script läuft nicht :( Wie kann ich erreichen, das beides funktioniert?

    Visual Basic-Quellcode

    1. dim var As Variant
    2. dim Anzahl_Workbooks as Long
    3. var = Application.GetOpenFilename( _
    4. FileFilter:="Excel-Dateien, *.xl*", _
    5. MultiSelect:=True)
    6. If var = False Then Exit Sub
    7. For Anzahl_Workbooks = LBound(var) To UBound(var)
    8. ...
    Werte den Typ von var aus, siehe stackoverflow:

    Visual Basic-Quellcode

    1. Dim var As Variant
    2. Dim Anzahl_Workbooks As Long
    3. var = Application.GetOpenFilename(FileFilter:="Excel-Dateien, *.xl*", MultiSelect:=True)
    4. If VarType(var) = vbBoolean Then
    5. If var = False Then MsgBox "Nix gewählt"
    6. ElseIf VarType(var) = (vbArray Or vbVariant) Then
    7. For i = 1 To UBound(var)
    8. MsgBox "Folgendes gewählt: " & var(i)
    9. Next
    10. End If
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Danke schön euch allen!

    Es kommt ein "Nix gewählt" Fenster, im nächsten Schritt danach

    Visual Basic-Quellcode

    1. For Anzahl_Workbooks = LBound(var) To UBound(var)

    wird trotzdem Fehler 13 angezeigt.

    Ich habe den Fehler so umgegangen:

    Visual Basic-Quellcode

    1. var = Application.GetOpenFilename(FileFilter:="Excel-Dateien, *.xl*", MultiSelect:=True)
    2. On Error Resume Next
    3. For Anzahl_Workbooks = LBound(var) To UBound(var)
    4. If Err.Number = 13 Then
    5. MsgBox "Es wurde keine Datei ausgewählt"
    6. Exit Sub
    7. Else
    8. On Error GoTo 0
    9. End If

    On Error sollte m.E. verwendet werden, wenn man den Fehler nicht anders abfangen kann. Kannst Du aber. Schließlich müsstest Du es einfach so machen:

    Visual Basic-Quellcode

    1. Dim var As Variant
    2. Dim Anzahl_Workbooks As Long
    3. var = Application.GetOpenFilename(FileFilter:="Excel-Dateien, *.xl*", MultiSelect:=True)
    4. If VarType(var) = vbBoolean Then
    5. If var = False Then MsgBox "Nix gewählt": Exit Sub
    6. ElseIf VarType(var) = (vbArray Or vbVariant) Then
    7. 'hier Dein Abarbeitungscode
    8. End If
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.