Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1916to1920
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
Laufzeitfehler 424 Objekt erforderlich
07.02.2023 13:02:01
Thomas
Hallo
ich habe folgenden Code, der auch funktioniert.
Lediglich wenn man den Prozess abbricht, kommt der Fehler Laufzeitfehler 424, Objekt erforderlich.
Wenn ich die Datei auswähle und bei Zellauswahl abbrechen will, bleibt er beim ersten hier hängen.
Set rngSourceRange = Application.InputBox(prompt:="Auswahl der Jahresverteilung", Title:="Auswahl Jahresverteilung", Default:="A1", Type:=8)
Sub Schaltfläche1_Klicken()
    Dim wkbCrntWorkBook As Workbook
    Dim wkbSourceBook As Workbook
    Dim rngSourceRange As Range
    Dim rngDestination As Range
    Set wkbCrntWorkBook = ActiveWorkbook
    With Application.FileDialog(msoFileDialogOpen)
        .Filters.Clear
        .Filters.Add "Excel 2007-13", "*.xlsx; *.xlsm; *.xlsa"
        .AllowMultiSelect = False
        .Show
        If .SelectedItems.Count > 0 Then
            Workbooks.Open .SelectedItems(1)
            Set wkbSourceBook = ActiveWorkbook
            Set rngSourceRange = Application.InputBox(prompt:="Auswahl der Jahresverteilung", Title:="Auswahl Jahresverteilung", Default:="A1", Type:=8)
            wkbCrntWorkBook.Activate
            Set rngDestination = Application.InputBox(prompt:="Zeilposition der Jahresverteilung", Title:="Ziel Jahresverteilung", Default:="A1", Type:=8)
            rngSourceRange.Copy rngDestination
            'rngDestination.CurrentRegion.EntireColumn.AutoFit
                        Workbooks.Open .SelectedItems(1)
            Set wkbSourceBook = ActiveWorkbook
            Set rngSourceRange = Application.InputBox(prompt:="Auswahl der Abteilungen", Title:="Auswahl Abteilungen", Default:="A1", Type:=8)
            wkbCrntWorkBook.Activate
            Set rngDestination = Application.InputBox(prompt:="Zielposition der Abteilungen", Title:="Ziel Abteilungen", Default:="A1", Type:=8)
            rngSourceRange.Copy rngDestination
            'rngDestination.CurrentRegion.EntireColumn.AutoFit
                        Workbooks.Open .SelectedItems(1)
            Set wkbSourceBook = ActiveWorkbook
            Set rngSourceRange = Application.InputBox(prompt:="Auswahl der Gesamtkosten [T€]", Title:="Auswahl Gesamtkosten", Default:="A1", Type:=8)
            wkbCrntWorkBook.Activate
            Set rngDestination = Application.InputBox(prompt:="Zielposition der Gesamtkosten", Title:="Ziel Gesamtkosten", Default:="A1", Type:=8)
            rngSourceRange.Copy rngDestination
            'rngDestination.CurrentRegion.EntireColumn.AutoFit
            wkbSourceBook.Close False
        End If
    End With
End Sub
Was muss ich hinzufügen um ein Abbrechen zu ermöglichen?
Danke
gruß Thomas

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

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 424 Objekt erforderlich
07.02.2023 13:43:00
ChrisL
Hi
Den Abbruch würde ich hier ausnahmsweise über ein Fehlerhandling abfangen.
Sub Schaltfläche1_Klicken()
    Dim wkbCrntWorkBook As Workbook
    Dim wkbSourceBook As Workbook
    Dim rngSourceRange As Range
    Dim rngDestination As Range
    Set wkbCrntWorkBook = ActiveWorkbook
    
    On Error GoTo errorhandler
    
    With Application.FileDialog(msoFileDialogOpen)
        .Filters.Clear
        .Filters.Add "Excel 2007-13", "*.xlsx; *.xlsm; *.xlsa"
        .AllowMultiSelect = False
        .Show
        If .SelectedItems.Count > 0 Then
            Workbooks.Open .SelectedItems(1)
            Set wkbSourceBook = ActiveWorkbook
            Set rngSourceRange = Application.InputBox(prompt:="Auswahl der Jahresverteilung", Title:="Auswahl Jahresverteilung", Default:="A1", Type:=8)
            wkbCrntWorkBook.Activate
            Set rngDestination = Application.InputBox(prompt:="Zeilposition der Jahresverteilung", Title:="Ziel Jahresverteilung", Default:="A1", Type:=8)
            rngSourceRange.Copy rngDestination
            'rngDestination.CurrentRegion.EntireColumn.AutoFit
                        Workbooks.Open .SelectedItems(1)
            Set wkbSourceBook = ActiveWorkbook
            Set rngSourceRange = Application.InputBox(prompt:="Auswahl der Abteilungen", Title:="Auswahl Abteilungen", Default:="A1", Type:=8)
            wkbCrntWorkBook.Activate
            Set rngDestination = Application.InputBox(prompt:="Zielposition der Abteilungen", Title:="Ziel Abteilungen", Default:="A1", Type:=8)
            rngSourceRange.Copy rngDestination
            'rngDestination.CurrentRegion.EntireColumn.AutoFit
                        Workbooks.Open .SelectedItems(1)
            Set wkbSourceBook = ActiveWorkbook
            Set rngSourceRange = Application.InputBox(prompt:="Auswahl der Gesamtkosten [T€]", Title:="Auswahl Gesamtkosten", Default:="A1", Type:=8)
            wkbCrntWorkBook.Activate
            Set rngDestination = Application.InputBox(prompt:="Zielposition der Gesamtkosten", Title:="Ziel Gesamtkosten", Default:="A1", Type:=8)
            rngSourceRange.Copy rngDestination
            'rngDestination.CurrentRegion.EntireColumn.AutoFit
            wkbSourceBook.Close False
        End If
    End With
    
Exit Sub
errorhandler:
If Err.Number = 424 Then
    ' Range-Auswahl wurde abgebrochen
    wkbSourceBook.Close False
Else
    ' anderer Fehler
    MsgBox "Unvorhergesehener Fehler " & Err.Number & ": " & Err.Description
End If
End Sub
cu
Chris
Anzeige
AW: Laufzeitfehler 424 Objekt erforderlich
07.02.2023 14:03:39
Thomas
Top, funktioniert.
Danke schön
AW: Laufzeitfehler 424 Objekt erforderlich
07.02.2023 16:01:39
Daniel
Hi
ich würde das etwas anders machen.
die Inputbox lässt sich hier leider nicht ohne Fehler abbrechen, aber ich mag das pauschale On Error Goto Sprungadresse für den ganzen Code nicht.
da es eine bestimmte Aktion ist , die den Fehler verursacht, besser so, um gezielt diesen Fehler zu vermeiden.
Set rngDestination = Nothing
On Error Resume Next
Set rngDestination = Application.InputBox(....)
On Error Goto 0
if rngDestination is Nothng then
    Msgbox "Abbruch"
else 
    rngSourceRange.Copy rngDestination
   Msgbox "erfolgreich kopiert
end If
wkbSourceBook.Close False
Gruß Daniel
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige