Excel VBA inputbox cancel error

Guten Tag miteinander

Ich kämpfe mit einem VBA code den ich unten poste. Der code selber funktioniert einwandfrei - nur wenn ich auf den cancel button klicke (der scheinbar den Wert False zurückgibt) startet der Debut editor mit der Fehlermeldung Runtime error ‚424‘ Object required.

Ich möchte den code beenden nachdem ein Hinweistext erscheint, sobald cancel geklickt wird.

Kann mir jemand weiterhelfen?
Vielen Dank und Gruss
André


Sub CopyPaste()

Dim InputCells As Excel.Range
Dim OutputCells As Excel.Range

'Zu kopierende Zeile anwählen
Set InputCells = Rows(„450:450“)

'Show input box to get row where data has to be posted
Set OutputCells = _
Application.InputBox(Prompt:=„Select cell where you want to insert an empty row“, _
Title:=„Please specify the row by clicking on the row number“, Type:=8)

On Error GoTo ERRORHANDLER

'Copy range of input cells
InputCells.Copy

'Paste it into output cells reference
OutputCells.Insert Shift:=xlDown

ERRORHANDLER:
Exit Sub

End Sub

bei mir geht’s, wenn die zeile

On Error GoTo ERRORHANDLER

vor der zeile

Set OutputCells = _
Application.InputBox(Prompt:=„Select cell where you want to
insert an empty row“, _
Title:=„Please specify the row by clicking on the row number“,
Type:=8)

steht, also:

Sub CopyPaste()

Dim InputCells As Excel.Range
Dim OutputCells As Excel.Range

'Zu kopierende Zeile anwählen
Set InputCells = Rows(„450:450“)

'Show input box to get row where data has to be posted
On Error GoTo ERRORHANDLER

Set OutputCells = _
Application.InputBox(Prompt:=„Select cell where you want to
insert an empty row“, _
Title:=„Please specify the row by clicking on the row number“,
Type:=8)

'Copy range of input cells
InputCells.Copy

'Paste it into output cells reference
OutputCells.Insert Shift:=xlDown

ERRORHANDLER:
Exit Sub

End Sub

Grüezi Andre

Ich kämpfe mit einem VBA code den ich unten poste. Der code
selber funktioniert einwandfrei - nur wenn ich auf den cancel
button klicke (der scheinbar den Wert False zurückgibt)
startet der Debut editor mit der Fehlermeldung Runtime error
‚424‘ Object required.

Ich möchte den code beenden nachdem ein Hinweistext erscheint,
sobald cancel geklickt wird.

Kann mir jemand weiterhelfen?

Wenn kein Bereich ausgewählt wurde kann auch die Objekt-Variable nicht zugewiesen werden, was dann einen Error erzeugt. Du musst daher mit On Error Resume Next zum nächsten Befehl weiterfahren und dann prüfen ob der Range zugewiesen worden ist:

Sub CopyPaste()

Dim InputCells As Excel.Range
Dim OutputCells As Excel.Range

 'Zu kopierende Zeile anwählen
 Set InputCells = Rows("450:450")

 'Show input box to get row where data has to be posted
 On Error Resume Next
 Set OutputCells = \_
 Application.InputBox(Prompt:="Select cell where you want to insert an empty row", \_
 Title:="Please specify the row by clicking on the row number", Type:=8)

 On Error GoTo 0
 If Not OutputCells Is Nothing Then
 'Copy range of input cells
 InputCells.Copy

 'Paste it into output cells reference
 OutputCells.Insert Shift:=xlDown
 Else
 MsgBox "Die Ausgabe wurde abgebrochen"
 End If

End Sub

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Vielen Dank, Thomas

Mit diesem code ist mein Problem erledigt!

Danke und Gruss
André

Verschiebe ‚OnError…‘ vor das ‚Set OutputCells…‘

Hallo Andrè,

setz einfach die Zeile

On Error GoTo ERRORHANDLER

vor die Set OutputCells Anweisung.

Gruß
Philipp

Hallo André,

damit eine Fehlerauswertung möglich ist muss die On Error-Anweisung vor den Zeilen stehen in denen der Fehler auftritt.

An der Sprungadresse muss dann eine entsprechende AUswertung der Fehlernummer erfolgen.

Gruß
Franz

Sub CopyPaste()

 Dim InputCells As Excel.Range
 Dim OutputCells As Excel.Range
 On Error GoTo ERRORHANDLER

 'Zu kopierende Zeile anwählen
 Set InputCells = Rows("450:450")

 'Show input box to get row where data has to be posted
 Set OutputCells = \_
 Application.InputBox(Prompt:="Select cell where you want to insert an empty row", \_
 Title:="Please specify the row by clicking on the row number", Type:=8)


 'Copy range of input cells
 InputCells.Copy

 'Paste it into output cells reference
 OutputCells.Insert Shift:=xlDown


ERRORHANDLER:
 With Err
 Select Case .Number
 Case 0 'Alles OK
 Case 424
 MsgBox "Copy was cancelled"
 Case Else
 MsgBox "Error #: " & .Number & vbLf & .Description
 End Select
 End With
End Sub

Hallo,

wenn Du „On Error Goto Errorhandler“ vor die InputBox stellst, funktioniert es.
Zwischen „ERRORHANDLER:“ und „ExitSub“ stellst du dann die MsgBox.
Gruß
PoD

Hallo,

hier ist lediglich die Zeile „On Error GoTo ERRORHANDLER“ an der falschen Stelle. Sie muss vor den Aufruf der Inputbox gesetzt werden.
Sinnvoll ist es bei längeren Programmcodes danach die Fehlerbehandlung wieder zu initialisieren. Dazu wird der Befehl
On Error Goto 0
an die Stelle gesetzt, an der der „ERRORHANDLER“ nicht mehr greifen soll.

Gruß
Natator

Hallo zusammen,
ich würde hier an dieser Stelle mit einer eigenen Userform als Inputbox arbeiten.
Dann das Makro ein wenig umstricken und schon funzt es.
Das Problem, welches hier vorliegt, bezieht sich auf eine nicht vorhandene Objektzuweisung und daher kommt es zu dem Fehler. Dieser läasst sich auch nicht aushebeln - außer mit einem anderen Ansatz - s.o.

Gruß,
Ptonka

Hallo andre…
Versuch mal die Zeile:
„On Error GoTo ERRORHANDLER“ etwas weiter vorne zu plazieren, dann klappt es auch!

mfg
Softoldi