Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Zeilenumbruch in Formel; zur Übersichtlichkeit

VBA Zeilenumbruch in Formel; zur Übersichtlichkeit
Bernd
Hallo Forumsmitglieder,
versuch in VBA Formel abzubilden. Klappt eigentlich super! Funktioniert aber nur wenn alles in einer Zeile steht. Habe in den Archiven gesucht, wie ich in VBA einen Zeilenumbruch innerhalb einer Formel hinbekomme. Scheitere aber immer wieder. Die Formel zwischen" "IF(And(RC........R6c1, """"))))))" " steht in VBA in einer Zeile. Würde gerne bei den If Abfragen einen Zeilenumbruch machen.

Sub Tarif_Variante1()
With Sheets("kundendaten").Range("aa2:aa100")
.FormulaR1C1 = _
"=IF(AND(RC[-1]=""bp"",RC[-3]Verkaufspreise!R9c2),Verkaufspreise!R9c1,IF(AND(RC[-1]=""bp"",RC[-3]>Verkaufspreise!R10C2),Verkaufspreise!R10C1,IF(AND(RC[-1]=""allg"",RC[-3]Verkaufspreise!R5c2),Verkaufspreise!R5c1,if(AND(RC[-1]=""allg"",RC[-3]>Verkaufspreise!R6C2),Verkaufspreise!R6c1, """"))))))"
.Value = .Value
End With
End Sub
Anzeige
hier hast du doch einen...
19.04.2010 12:40:43
robert
.FormulaR1C1= _
gruß
robert
AW: VBA Zeilenumbruch in Formel; zur Übersichtlichkeit
19.04.2010 12:46:35
firmus
Hallo Bernd,
Vielleicht ein passender Ansatz für Dich.
wenn ich Gefahr laufe, dass eine Formel unübersichtlich wird, mache ich das so:
ftext as string definiert.
ftext = ""
ftext = ftext & "1. Teil der Formel........"
ftext = ftext & "2. Teil der Formel........"
ftext = ftext & "3. Teil der Formel........"
Am Ende weise ich ftext der entsprechenden Zelle zu.
Gruß
Firmus
Anzeige
AW: VBA Zeilenumbruch in Formel; zur Übersichtlichkeit
19.04.2010 12:57:39
Bernd
Hallo Firmus,
hört sich für mich nicht schlecht an. Allerdings tue ich mich mit VBA noch schwer, insbesondere wenn ich irgendetwas definieren muss. Kannst du mir das anhand der Formel etwas genauer zeigen.
Gruß Bernd
AW: VBA Zeilenumbruch in Formel; zur Übersichtlichkeit
19.04.2010 13:26:34
firmus
Hallo Bernd,
etwa so sieht das aus.
Ausriß aus einem Makro, das eine bestimmte Spalte sucht
Die der Spaltenbuchstabe wurde in offC_find geschrieben.
in cSAM steht auch ein Buchstabe. In dieser Spalte soll jede Zeile "=VLOOKUP(........ en..." als
Formel eingesetzt bekommen.
Anschließend werden die Formeln durch die erhaltenen Werte ersetzt.
sub testmacro()
dim cSAM as String
dim offC_find as String
dim tempformel as String
....
....
Range(cSAM & "2").Select
tempformel = "=VLOOKUP(RC" & offC_find & ",'[VX_Team.xls]ALL_Assigned_Sites'!SAMsiteIDs,2,FALSE)"
ActiveCell.FormulaR1C1 = tempformel
ActiveCell.Copy
Range(cSAM & "2:" & cSAM & VXFILanzze).Select
ActiveSheet.Paste
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
...
...
Die Lösung mit dem Zeilenumbruch direkt im Editor gefällt mir auch gut.
Es kommt jeweils darauf an welche Lösung zur Anforderung besser paßt (effizient ist).
Gruß
Firmus
Anzeige
AW: VBA Zeilenumbruch in Formel; zur Übersichtlichkeit
19.04.2010 12:57:06
Rudi
Hallo,
With Sheets("kundendaten").Range("aa2:aa100")
.FormulaR1C1 = _
"=IF(AND(RC[-1]=""bp"",RC[-3]Verkaufspreise!R9c2),Verkaufspreise!R9c1," _
& "IF(AND(RC[-1]=""bp"",RC[-3]>Verkaufspreise!R10C2),Verkaufspreise!R10C1," _
& "IF(AND(RC[-1]=""allg"",RC[-3]Verkaufspreise!R5c2),Verkaufspreise!R5c1," _
& "if(AND(RC[-1]=""allg"",RC[-3]>Verkaufspreise!R6C2),Verkaufspreise!R6c1, """"))))))"
.Value = .Value
End With

Gruß
Rudi
Anzeige
AW: VBA Zeilenumbruch in Formel; zur Übersichtlichkeit
19.04.2010 14:13:18
Bernd
Hallo Rudi,
Hallo Firmus,
die Lösung von Firmus muss ich erst mal testen. Ich würde die Lösunge mit dem Zeilenumbruch direkt im Editor bevorzugen. Doch bringt er mir Laufzeitfehler 1004; Anwendungs- oder objektdefinierter Fehler.
Hab den Teil mit der Formel in VBA reinkopiert, liegt es vielleicht daran?.
Anzeige
AW: VBA Zeilenumbruch in Formel; zur Übersichtlichkeit
19.04.2010 14:17:52
Rudi
Hallo,
möglicherweise hat die Forensoftware was verschluckt.
Beim 1. und 3. Verkaufspreise fehlt ein <.
Gruß
Rudi
AW: VBA Zeilenumbruch in Formel; zur Übersichtlichkeit
19.04.2010 15:07:48
Bernd
Hallo Rudi,
hätte ich eigentlich gleich sehen sollen, dass die Forensoftware nicht alles dargestellt. Jetzt hat es funktioniert. Eine weitere Frage wäre: Kann bei einer Wenn Abfrage in VBA auch nur 7 Verschachtelungen abfragen?
Gruß Bernd
Anzeige
AW: VBA Zeilenumbruch in Formel; zur Übersichtlichkeit
19.04.2010 15:44:39
Rudi
Hallo,
natürlich auch nur 7, da du ja eine Formel in die Zellen schießt.
Wenn du auch mit ner 0 als Erg. leben kannst nach diesem Schema:
=WENN(UND(Z2="bp";X2Verkaufspreise!$B$10);Verkaufspreise!$A$10;0)+WENN(UND(Z2="allg";X2Verkaufspreise!$B$6);Verkaufspreise!$A$6;0) 
Gruß
Rudi
Anzeige
AW: VBA Zeilenumbruch in Formel; zur Übersichtlichkeit
20.04.2010 11:49:27
Bernd
Hallo Rudi,
hat geklappt. Allerdings nur mit Umwegen. Da das 1. Ergebnis einen Text als Wert wiedergibt, und der Sonst-Wert 0 ausgibt, erhalte ich den Fehler #Wert. Habe dann die Abfragen nummeriert und danach mit einem Sverweis wieder den Text erhalten. War zwar etwas aufwendig, aber funktioniert.
Danke nochmals für deine Hilfe
Gruß Bernd
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Zeilenumbruch in Formeln für bessere Übersichtlichkeit


Schritt-für-Schritt-Anleitung

Um einen Zeilenumbruch in einer Excel-Formel innerhalb von VBA zu erstellen, kannst du den folgenden Ansatz verwenden. Dies erhöht die Übersichtlichkeit deiner Formeln erheblich:

  1. Definiere die Formel in mehreren Zeilen: Statt die gesamte Formel in einer Zeile zu schreiben, teile sie in mehrere Teile auf.
  2. Verwende das Zeichen & für die Verkettung: Füge die Teile der Formel mit dem & Zeichen zusammen.
  3. Nutze vbCrLf für den Zeilenumbruch: Dies sorgt dafür, dass die Formel in der Zelle übersichtlich dargestellt wird.

Hier ein Beispiel für VBA:

Sub BeispielZeilenumbruch()
    Dim ftext As String
    ftext = "=IF(AND(RC[-1]=""bp"", RC[-3] < Verkaufspreise!R9C2), " & _
            "Verkaufspreise!R9C1, " & _
            "IF(AND(RC[-1]=""bp"", RC[-3] > Verkaufspreise!R10C2), " & _
            "Verkaufspreise!R10C1, " & _
            "IF(AND(RC[-1]=""allg"", RC[-3] < Verkaufspreise!R5C2), " & _
            "Verkaufspreise!R5C1, """"))))"

    With Sheets("kundendaten").Range("AA2:AA100")
        .FormulaR1C1 = ftext
        .Value = .Value
    End With
End Sub

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dies kann auftreten, wenn die Formel nicht korrekt aufgebaut ist. Überprüfe die Syntax und stelle sicher, dass alle Anführungszeichen und Operatoren richtig gesetzt sind.

  • Fehlende Verkettungszeichen (&): Achte darauf, dass du & an den richtigen Stellen verwendest, um Zeilen zu verbinden.

  • Unzureichende Verschachtelung: In VBA sind normalerweise nur sieben Verschachtelungen in einer WENN-Bedingung erlaubt. Achte darauf, dies zu berücksichtigen.


Alternative Methoden

Ein alternativer Ansatz für den Excel VBA Zeilenumbruch könnte sein, die Formel in einer variablen Zeichenkette zu definieren und diese dann zuzuweisen:

Sub AlternativeMethode()
    Dim tempFormel As String
    tempFormel = "=WENN(UND(RC[-1]=""bp"";RC[-3] < Verkaufspreise!R9C2);" & _
                 "Verkaufspreise!R9C1; " & _
                 "0)"

    Sheets("kundendaten").Range("AA2").FormulaR1C1 = tempFormel
End Sub

Hierbei wird die Formel in einer klaren Struktur aufgebaut, was das Verständnis und die Fehlersuche erleichtert.


Praktische Beispiele

Hier sind einige praktische Beispiele, die zeigen, wie du Excel Zeilenumbruch in Formeln effektiv nutzen kannst:

  1. Komplexe Berechnungen: Verwende den Zeilenumbruch für komplexe Berechnungen, um die Lesbarkeit zu erhöhen.

  2. Einfache Bedingungen: Auch einfache Bedingungen profitieren von einer klaren Struktur:

Sub EinfacheBedingung()
    Dim formel As String
    formel = "=WENN(A1 > 10; ""Über 10""; ""10 oder weniger"")"

    Sheets("Tabelle1").Range("B1").FormulaR1C1 = formel
End Sub

Tipps für Profis

  • Nutze Kommentare in deinem Code: Dies kann helfen, die Funktionsweise deiner Formeln besser zu dokumentieren.

  • Teste deine Formeln Schritt für Schritt: Das kann helfen, Fehler frühzeitig zu erkennen.

  • Verwende Debugging-Tools: Diese sind nützlich, um Probleme in komplexen VBA-Skripten zu identifizieren.


FAQ: Häufige Fragen

1. Frage: Wie kann ich einen Zeilenumbruch in einer Formel in Excel ohne VBA erstellen?
Antwort: Du kannst in einer Zelle mit ALT + ENTER einen Zeilenumbruch einfügen, jedoch wird dies nicht in einer Formel direkt unterstützt.

2. Frage: Gibt es eine Begrenzung für die Länge einer Formel in VBA?
Antwort: Ja, in VBA gibt es eine maximale Zeichenanzahl für eine Formel, die in einer Zelle eingegeben werden kann. Dies kann von der Excel-Version abhängen.

3. Frage: Was kann ich tun, wenn ich Laufzeitfehler bekomme?
Antwort: Überprüfe zuerst die Syntax deiner Formel und stelle sicher, dass alle Referenzen korrekt sind. Achte auch auf fehlende Verkettungszeichen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige