Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Befehlszeile in VBA zu lang - wie trennen?

Befehlszeile in VBA zu lang - wie trennen?
03.06.2005 07:27:05
Wolfgang
Hallo,
wieder plagt mich ein Problem und ich befrage daher erneut das Forum; die untenstehende Zeile muß ich noch um viele Felder ergänzen, so dass in VBA der Platz in einer Zeile nicht mehr reicht und mir die weiteren "Befehle" in die nächste Zeile rutschen. Nun kommt eine Fehlermeldung mit Hinweis dass entweder Then oder GoTo folgen muß. Dieses Then steht nun natürlich in der zweiten Zeile. Was muß ich machen damit beide Zeilen als zusammenhängend erkannt werden ? Wahrscheinlich muß da irgendwie eine Zeilentrennung oder so gesetzt werden - wie könnte die aussehen ? Wäre wieder sehr dankbar für Eure Mithilfe.
Gruß - Wolfgang
Hier die Zeile, die ich noch "verlängern" muß und somit nicht mehr in eine Reihe paßt.
If Trim$(Range("A2").Offset(intCount).Value) = strOldName And Trim$(Range("B2").Offset(intCount).Value) = strOldVorname And Trim$(Range("C2").Offset(intCount).Value) = strOldGebdat And Trim$(Range("D2").Offset(intCount).Value) = strOldBeruf And Trim$(Range("E2").Offset(intCount).Value) = strOldStr And Trim$(Range("F2").Offset(intCount).Value) = strOldPLZ And Trim$(Range("G2").Offset(intCount).Value) = strOldBKZ And Trim$(Range("I2").Offset(intCount).Value) = strOldDstnr And Trim$(Range("J2").Offset(intCount).Value) = strOldOrgz And Trim$(Range("K2").Offset(intCount).Value) = strOldEnr1 And Trim$(Range("L2").Offset(intCount).Value) = strOldAnrede And Trim$(Range("M2").Offset(intCount).Value) = strOldVorwahl And Trim$(Range("N2").Offset(intCount).Value) = strOldErgebnis Then
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Befehlszeile in VBA zu lang - wie trennen?
03.06.2005 07:37:49
Nepumuk
Hallo Wolfgang,
Mit Blank - Underscore - Enter
Sieht dann so aus:
Private Sub prcControlAdd( _
    ByRef objParent As Object, _
    Optional ByRef varControl As Variant, _
    Optional ByVal enumType As MsoControlType, _
    Optional ByVal varId As Variant, _
    Optional ByVal varBefore As Variant, _
    Optional ByVal varTemporary As Variant, _
    Optional ByVal bolBeginGroup As Boolean = False, _
    Optional ByVal varCaption As Variant, _
    Optional ByVal varFaceId As Variant, _
    Optional ByVal varOnAction As Variant, _
    Optional ByVal enumStyle As MsoButtonStyle, _
    Optional ByVal varTipText As Variant, _
    Optional ByVal enumState As MsoButtonState, _
    Optional ByVal varTag As Variant, _
    Optional ByVal enumLinkType As MsoCommandBarButtonHyperlinkType, _
    Optional ByVal bolEnabled As Boolean = True, _
    Optional ByVal bolVisible As Boolean = True, _
    Optional ByVal varWidth As Variant, _
    Optional ByVal varDropDownWidth As Variant, _
    Optional ByVal varDropDownLines As Variant)


Das wäre normalerweise eine Zeile. Strings kannst du so nicht trennen, da musst du den String trennen und mit einen & wieder verknüpfen. So z.B.:
strBlaBla = "blablablablablablablablablablablablablablablablablablablabla" & _
    "blablablablablablablablablablablablablablablablablablablablablabla" & _
    "blablablablablablablablablablablablablablablablablablablablablabla"

Gruß
Nepumuk
Anzeige
AW: Befehlszeile in VBA zu lang - wie trennen?
03.06.2005 07:45:35
Wolfgang
Hallo Nepomuk,
Danke für Deine schnelle Rückanwort und Mithilfe. Ich werde heute abend zuhause Dein Beispiel direkt umsetzen und mich morgen wieder kurz melden. Nochmals recht herzlich Dank.
Gurß - Wolfgang
AW: Befehlszeile in VBA zu lang - wie trennen?
03.06.2005 20:35:03
Wolfgang
Hallo Nepumuk,
Hallo Forumsmitglieder,
Ich habe nun zuhause zig verschiedene Varianten getestet und komme auf keinen grünen Zweig. Könntest Du oder jemand anderes mir vielleicht anhand meiner vorgegebenen Zeilen zeigen, wie und wo ich genau trennen muß? - Ich bekomme immer nur Fehlermeldungen, mal ist es ein Syntaxfehler, dann soll ich wieder mittendrin Then oder GoTo setzen und und..; Ich wäre sehr dankbar für weitere Hilfestellung und bedanke mich schon jetzt wieder für diese.
Gurß - Wolfgang
Anzeige
AW: Befehlszeile in VBA zu lang - wie trennen?
Nepumuk
Hallo Wolfgang,
so z.B.
If Trim$(Range("A2").Offset(intCount).Value) = strOldName And _
        Trim$(Range("B2").Offset(intCount).Value) = strOldVorname And _
        Trim$(Range("C2").Offset(intCount).Value) = strOldGebdat And _
        Trim$(Range("D2").Offset(intCount).Value) = strOldBeruf And _
        Trim$(Range("E2").Offset(intCount).Value) = strOldStr And _
        Trim$(Range("F2").Offset(intCount).Value) = strOldPLZ And _
        Trim$(Range("G2").Offset(intCount).Value) = strOldBKZ And _
        Trim$(Range("I2").Offset(intCount).Value) = strOldDstnr And _
        Trim$(Range("J2").Offset(intCount).Value) = strOldOrgz And _
        Trim$(Range("K2").Offset(intCount).Value) = strOldEnr1 And _
        Trim$(Range("L2").Offset(intCount).Value) = strOldAnrede And _
        Trim$(Range("M2").Offset(intCount).Value) = strOldVorwahl And _
        Trim$(Range("N2").Offset(intCount).Value) = strOldErgebnis Then

Gruß
Nepumuk

Hallo Nepumuk,
ich entdecke wahrscheinlich schon meine Fehler, wäre da aber, als Laie und Anfänger so nie 'drauf gekommen. Darum nochmals vielen herzlichen Dank für Deine Mithilfe und so schnelle Antwort. Ich werde gleich weiter testen und mich Morgen auf jeden Fall noch wieder melden.
Gruß - Wolfgang

Hallo Nepumuk,
ich hatte je versprochen, mich heute noch kurz wieder zu melden. Es läuft nun Dank Deiner Mitwirkung/Mithilfe tadellos. Ich konnte somit nun verschiedene Dinge anpassen und umändern. Recht herzlichen Dank noch einmal und weiterhin alles Gute!!
Gruß - Wolfgang Berger
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Befehlszeile in VBA effektiv trennen und organisieren


Schritt-für-Schritt-Anleitung

Um eine lange Befehlszeile in VBA zu trennen, kannst du die folgende Vorgehensweise nutzen:

  1. Verwende das Und-Zeichen (&): Um Strings in VBA zu verknüpfen, solltest du das Zeichen & verwenden.
  2. Setze einen Unterstrich (_) am Ende der Zeile: Dies signalisiert VBA, dass die Zeile fortgesetzt wird.
  3. Drücke die Eingabetaste: Nach dem Unterstrich kannst du die Eingabetaste drücken, um die Zeile zu trennen.

Hier ein Beispiel:

If Trim$(Range("A2").Offset(intCount).Value) = strOldName And _
   Trim$(Range("B2").Offset(intCount).Value) = strOldVorname And _
   Trim$(Range("C2").Offset(intCount).Value) = strOldGebdat Then

Häufige Fehler und Lösungen

  1. Syntaxfehler: Oft tritt dieser Fehler auf, wenn das Then oder GoTo nicht korrekt positioniert ist. Stelle sicher, dass der letzte Teil der Bedingung auf der letzten Zeile steht.

  2. Zeilen nicht korrekt getrennt: Wenn du das Und-Zeichen nicht am Ende der Zeile setzt, wird die Zeile nicht als fortlaufend erkannt.

  3. Falsche Verwendung von Trim$: Achte darauf, dass du die Funktion Trim$ korrekt anwendest. Die Syntax sollte immer Trim$(Range(...).Value) sein.


Alternative Methoden

Falls du häufig mit langen Befehlszeilen in VBA arbeitest, könnten folgende Methoden nützlich sein:

  • Verwende Arrays: Anstatt viele If-Bedingungen zu verwenden, kannst du die Werte in ein Array speichern und eine Schleife verwenden, um die Bedingungen zu überprüfen.

  • Unterfunktionen: Teile die Logik in kleine Unterfunktionen auf. So bleibt der Hauptcode übersichtlich.

Beispiel:

Function CheckConditions() As Boolean
    CheckConditions = (Trim$(Range("A2").Offset(intCount).Value) = strOldName) And _
                      (Trim$(Range("B2").Offset(intCount).Value) = strOldVorname)
End Function

Praktische Beispiele

Hier ist ein praktisches Beispiel, das zeigt, wie du eine lange Bedingung mit Trim$ in VBA umsetzen kannst:

If Trim$(Range("A2").Offset(intCount).Value) = strOldName And _
   Trim$(Range("B2").Offset(intCount).Value) = strOldVorname And _
   Trim$(Range("C2").Offset(intCount).Value) = strOldGebdat And _
   Trim$(Range("D2").Offset(intCount).Value) = strOldBeruf Then
    ' Dein Code hier
End If

Tipps für Profis

  • Nutze Kommentare: Wenn du längere Bedingungen verwendest, füge Kommentare ein, um die Lesbarkeit zu verbessern.

  • Indentation: Achte darauf, dass du den Code gut einrückst. So ist es einfacher, die Struktur zu erkennen.

  • Debugging: Verwende die Debugging-Tools in VBA, um Fehler schneller zu finden. Die Möglichkeit, den Code Schritt für Schritt auszuführen, kann hilfreich sein.


FAQ: Häufige Fragen

1. Wie kann ich wirklich lange Zeilen in VBA vermeiden? Verwende Arrays oder teile deinen Code in Unterfunktionen auf, um die Lesbarkeit zu erhöhen.

2. Was passiert, wenn ich das Und-Zeichen am Ende der Zeile vergesse? VBA interpretiert die nächste Zeile als neuen Befehl und es kann zu Syntaxfehlern kommen.

3. Gibt es eine maximale Anzahl von Zeilen, die ich auf diese Weise verbinden kann? Es gibt keine spezifische Grenze, aber es ist ratsam, den Code übersichtlich zu halten, um die Wartbarkeit zu gewährleisten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige