2.2k Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (926 Punkte)
Hallo Makro-Spezi,

wenn ich die Makrodurchläufe beenden will, klicke ich bei der InputBox auf "abbrechen". Wie fange ich die dann folgende Fehlermeldung "Typen unverträglich" ab und beende das Makro sofort?

Sub Verketten()
Dim ZelleE
Set ZelleE = Application.InputBox(Prompt:="Zelle auswählen um Text zusammenzufügen", Type:=8)
'hier fehlt was?
inhalt1 = ZelleE.Value
inhalt2 = ZelleE.Offset(1, 0).Value
ZelleE.Value = inhalt1 & " " & inhalt2
ZellEl.Offset(1, 0).Rows("1:1").EntireRow.Delete
Call Verketten7
End Sub

Vielen Dank im Voraus
Schönen Abend noch
Wolfgang

8 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Wolfgang,


ption Explicit

Sub Verketten()
Dim ZelleE As Range
Dim Inhalt1 As String
Dim Inhalt2 As String
Dim ZellEl As Range
On Error Resume Next
Set ZelleE = Application.InputBox(Prompt:="Zelle auswählen um Text zusammenzufügen", Type:=8)
If Err = 0 Then
On Error GoTo 0
'hier fehlt was?
'If Not ZelleE Is Nothing Then
Inhalt1 = ZelleE.Value
Inhalt2 = ZelleE.Offset(1, 0).Value
ZelleE.Value = Inhalt1 & " " & Inhalt2
' Variable ZellEl ist nicht belegt
ZellEl.Offset(1, 0).Rows("1:1").EntireRow.Delete
Call Verketten7
End If
On Error GoTo 0
End Sub


Gruß Hajo
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Hajo,
schon mal Danke für die schnelle Antwort.
Ich bin etwas erstaunt, das da soviel noch eingefügt werden soll.
Ich hatte tatsächlich die "Option Explicit"-Anweisung vergessen. Da fielen dann die fehlenden Dim Anweisungen auch nicht auf.
Diese Zeile: 'If Not ZelleE Is Nothing Then
ist wie ein Kommentar eingegeben: Ist das ein Versehen? Warum steht die da?
Du hast noch um "ZelleE1" ergänzt. Warum? Das habe ich wieder gelöscht.
Vielen Dank
mfg
Wolfgang
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Wolfgang,

die Zeile mit Not war der erste versuch die kann raus.
Die Zeile mit ZelleE1 wo mein Kommentar steht war schon da.

Gruß Hajo
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo,
leider lässt sich das Makro immer noch nicht ohne Fehlermeldung beenden.
Klicke ich beim erscheinen der InputBox auf "Abbrechen", folgt die Meldung "Laufzeitfehler 424, Objekt erforderlich". Wie bekomme ich die Weg?
In meiner ursprünglichen Frage waren beim Übertragen hierher noch Schreibfehler reingeraten.
ZellE1 und verketten7 waren Unsinn. So wie hier tut das Makro was es soll, nur sollte man es ohne obige Fehlermeldung beenden können.

Option explicit
Sub Verketten()
Dim ZelleE As Range
Dim Inhalt1 As String
Dim Inhalt2 As String
On Error Resume Next
Set ZelleE = Application.InputBox(Prompt:="Zelle auswählen um Text zusammenzufügen", Type:=8)
If Err = Then
On Error GoTo 0
On Error Resume Nex
Inhalt1 = ZelleE.Value
Inhalt2 = ZelleE.Offset(1, 0).Value
ZelleE.Value = Inhalt1 & " " & Inhalt2
ZelleE.Offset(1, 0).Rows("1:1").EntireRow.Delete
Call Verketten
End If
On Error GoTo 0
End Sub

Vielen Dank im Voraus
mfg
Wolfgang
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Wolfgang,

der Code kann nicht laufen, bei Dir steht
If Err = Then
bei mir steht
If Err =0 Then

mal ohne Testung.

Gruß Hajo
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Hajo,

beim kopieren vom VBA-Fenster hierher sind offenbar 2 Zeichen abhanden gekommen. Die "0" und auch das "t" vom 2ten "next" fehlen. Beides würde tatsächlich dazu führen, das der Code von Anfang an nicht läuft.
Tatsache ist aber, das dieses Makro genau das tut was es soll. Nur benden kann ich es nur über "Abbrechen", mit der dann folgenden Fehlermeldung s.o.

mfg

Wolfgang
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Wolfgang,

ich habe das erste Makro nochmal geprüft und überarbeitet.

Option Explicit

Sub Verketten()
Dim ZelleE As Range
Dim Inhalt1 As String
Dim Inhalt2 As String
Dim ZellEl As Range
On Error Resume Next
Set ZelleE = Application.InputBox(Prompt:="Zelle auswählen um Text zusammenzufügen", Type:=8)
If Err = 0 Then
' On Error GoTo 0
'hier fehlt was?
'If Not ZelleE Is Nothing Then
Inhalt1 = ZelleE.Value
Inhalt2 = ZelleE.Offset(1, 0).Value
ZelleE.Value = Inhalt1 & " " & Inhalt2
' Variable ZellEl ist nicht belegt
ZellEl.Offset(1, 0).Rows("1:1").EntireRow.Delete
Call Verketten7
End If
On Error GoTo 0
End Sub

Sub Verketten7()
ActiveCell.Font.Color = 225
End Sub


Gruß Hajo
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Hajo,
entschuldige bitte das ich mich einige Zeit nicht mehr gemeldet habe.
Vielen Dank für deine Ergänzungen, das Makro funktioniert jetzt wie gewünscht.
mfg
Wolfgang
...