Registriert seit: 21.01.2026
Version(en): Microsoft® Excel® für Microsoft 365 MSO (Version 2511 Build 16.0.19426.20218) 64 Bit
Hallo,
ich war mal wieder am lernen und finde meinen Fehler nicht. Wenn ich das Programm ausführe bekomme ich die Fehlermeldung...
Fehler beim Kompilieren If-Block ohne End If
Sub BenannteParameter() Adresse "Maier", Ort:="Hamburg" Adresse "Maier", Ort:="Hamburg", PLZ:="80445" Adresse "Maier", Vorname:="Ernst", Ort:="Hamburg", PLZ:="80445" Adresse Name:="Maier", PLZ:="80445", Vorname:="Ernst" Adresse "Maier" End Sub
Sub Adresse(Name As String, Optional Vorname As String, _ Optional PLZ As String, Optional Ort As String) Dim Ausgabe As String If Vorname <> "" Then Ausgabe = Name & ", " & Vorname Else Ausgabe = Name End If If PLZ <> "" Then If Ort <> "" Then Ausgabe = Ausgabe & vbCrLf & PLZ & " " & Ort Else Ausgabe = Ausgabe & vbCrLf & PLZ End If Else If Ort <> "" Then Ausgabe = Ausgabe & vbCrLf & Ort End If MsgBox Ausgabe End Sub
Registriert seit: 30.06.2023
Version(en): 2019
Hallo Micha2005, mach es so: Code: Else ''entweder so: If Ort <> "" Then Ausgabe = Ausgabe & vbCrLf & Ort ''oder so: If Ort <> "" Then _ Ausgabe = Ausgabe & vbCrLf & Ort End If
wichtig: der Unterstrich (_) nach Then Gruß von Luschi aus klein-Paris
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
... und, um mal den Fehler mit eigenen Worten zu benennen, dort fehlt im Originalcode ein End If: Code: . If PLZ <> "" Then If Ort <> "" Then Ausgabe = Ausgabe & vbCrLf & PLZ & " " & Ort Else Ausgabe = Ausgabe & vbCrLf & PLZ End If Else If Ort <> "" Then Ausgabe = Ausgabe & vbCrLf & Ort '--> hier End If
Du hast ja schon ordentlich eingerückt. Wenn Du da mit dem Cursor runter gehst, könnte man es merken. Eine andere Variante wäre, alles zu kommentieren Code: . 'Wenn die PLZ leer ist, dann If PLZ <> "" Then 'Wenn der Ort leer ist, dann (1) If Ort <> "" Then Ausgabe = Ausgabe & vbCrLf & PLZ & " " & Ort 'Wenn der Ort leer ist, dann (1) oder nicht Else Ausgabe = Ausgabe & vbCrLf & PLZ 'Ende Wenn der Ort leer ist, dann (1) End If 'Wenn die PLZ leer ist, dann oder nicht Else 'Wenn der Ort leer ist, dann (2) If Ort <> "" Then Ausgabe = Ausgabe & vbCrLf & Ort '--> hier 'Ende Wenn die PLZ leer ist, dann End If
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Micha2005
Registriert seit: 21.01.2026
Version(en): Microsoft® Excel® für Microsoft 365 MSO (Version 2511 Build 16.0.19426.20218) 64 Bit
Hab den Fehler gefunden, das mit den Auskommentieren ist eine gute Idee um die Übersicht zu behalten...
Vor allem als Neuling.
Danke für die Hilfe...
Gruß Micha
Registriert seit: 30.06.2023
Version(en): 2019
Hallo Micha2005, Zitat:Hab den Fehler gefunden, und welchen Vorschlag hast Du jetzt umgesetzt? fragt sich Luschi aus klein-Paris
Registriert seit: 12.07.2025
Version(en): 2021
Weitere Frage: Möchtest Du eine Variante sehen wie man so etwas professioneller macht?
Einen Text mit IF THEN zusammen bauen führt leicht zu Fehlern, mit einer Maske ist das deutlich einfacher.
Andreas.
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
29.03.2026, 09:34
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2026, 09:34 von RPP63.)
Moin! Ja, mir ist klar, dass es sich hier um eine Übung handelt. Dennoch: Da der TE Office 365 besitzt, kann man natürlich auch dessen Möglichkeiten nutzen. Code: Sub Adresse(Name As String, Optional Vorname As String, _ Optional PLZ As String, Optional Ort As String) Dim Ausgabe As String Ausgabe = WorksheetFunction.TextJoin(", ", 1, Name, Vorname, PLZ, Ort) MsgBox Ausgabe End Sub
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 22.09.2024
Version(en): 2010, 2021
29.03.2026, 10:55
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2026, 10:57 von knobbi38.)
Das geht auch immer noch ohne O365 oder Worksheetfunction, einfach klasssich mit VBA: Code: dim s as String
s = trim(plz & " " & ort)
if len(s) then Ausgabe = Ausgabe & vbCrLf & s ' oder if s <> "" then Ausgabe = Ausgabe & vbCrLf & s
... aber das war glaube ich nicht die Frage. Knobbi38
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
29.03.2026, 11:47
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2026, 11:47 von RPP63.)
(29.03.2026, 10:55)knobbi38 schrieb: ... aber das war glaube ich nicht die Frage. Ja, ich hatte mich leicht verlaufen.  Micha2005 unterscheidet ja den Ausgabetext in Bezug auf verschiedene optionale Parameter. Egal: Eine uralte Methode wäre auch die Übergabe beliebig vieler Parameter an ein ParamArray. (ich weiß, ist auch nicht die Frage der Threaderöffnung) Code: Sub ParArr() Adr_2 "Maier", "Hamburg" Adr_2 "Maier", 80445, "Hamburg" End Sub
Sub Adr_2(ParamArray Adressen() As Variant) MsgBox Join(Adressen, vbLf) End Sub
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 22.09.2024
Version(en): 2010, 2021
Na ja, nicht ganz dasselbe Ergebnis, denn PLZ und Ort sollten glaube ich zusammen in eine neue Zeile und der Name darüber.  Knobbi38
|