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
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
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
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
wenn Du „On Error Goto Errorhandler“ vor die InputBox stellst, funktioniert es.
Zwischen „ERRORHANDLER:“ und „ExitSub“ stellst du dann die MsgBox.
Gruß
PoD
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.
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.