Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Formel Zeilenumbrüche

VBA Formel Zeilenumbrüche
13.09.2016 17:28:46
Henry
Hallo Liebe VBA Experts,
ich bekomme unten stehende Formel leider nicht korrekt mit den Zeilenumbrüchen getrennt. Egal ob ich & _ oder nur _ mit und ohne Anführungszeichen etc erhalten ich immer Fehlermeldungen. Erwarte Anweisungsende oder Sprungmarke etc
Wer kann helfen ?
Danke!!!!!
=IF(AND(RC[-29]0,RC[-26]=0,RC[-76]="HAMBK",LEFT(RC[-16],16)"ZWISCHENRECHNUNG") ,CONCATENATE("Storage Days"," ","="," ",RC[-97]," ","/"," ","Free Time"," ","="," ",RC[-33]," ","Day(s) "," ","/"," ",RC[-32]," ","Day(s) "," ","@",RC[-29]/RC[-30]," ","per Day"," ","/"," ",R1C[-92]," ",RC[-92]," ","/"," ",R1C[-90]," ",RC[-90]," ",) ,IF(AND(RC[-29]0,RC[-26]0,RC[-76]="HAMBK",LEFT(RC[-16],16)"ZWISCHENRECHNUNG") ,CONCATENATE("Storage Days"," ","="," ",RC[-97]," ","/"," ","Free Time"," ","="," ",RC[-33]," ","Day(s) "," ","/"," "," ",RC[-32]," ","Days"," ","@",RC[-29]/RC[-30]," ","per Day"," ","&"," ",RC[-27]+RC[-24]+RC[-21]," ","Day(s) "," ","@"," ",(RC[-26]+RC[-23]+RC[-20])/(RC[-27]+RC[-24]+RC[-21]) ," ","per Day"," ","/"," ",R1C[-92]," ",RC[-92]," ","/"," ",R1C[-90]," ",RC[-90]," ",) ,IF(AND(RC[-29]0,RC[-26]=0,RC[-76]="HAMBK",LEFT(RC[-16],16)="ZWISCHENRECHNUNG") ,CONCATENATE("preliminary invoice after"," ",RC[-97]," ","day(s) / final invoice will follow once container picked up: Storage Days"," ","="," ",RC[-97],"
","/"," ","Free Time"," ","="," ",RC[-33]," ","Day(s)"," ","/"," ",RC[-32]," ","Day(s)"," ","@",RC[-29]/RC[-30]," ","per Day"," ","/"," ",R1C[-92]," ",RC[-92]," ","/"," ","No Out Date"," ","Calculation till"),IF(AND(RC[-29]0,RC[-26]0,RC[-76]="HAMBK",LEFT(RC[-16],16)="ZWISCHENRECHNUNG"),CONCATENATE("preliminary invoice after"," ",RC[-97]," ","day(s) / final invoice will follow once container picked up: Storage Days"," ","="," ",RC[-97]," ","/"," ","Free Time"," ","="," ",RC[-33]," ","Day(s)"," ","/"," "," ",RC[-32]," ","Days"," ","@",RC[-29]/RC[-30]," ","per Day"," ","&"," ",RC[-27]+RC[-24]+RC[-21]," ","Day(s)"," ","@"," ",(RC[-26]+RC[-23]+RC[-20])/(RC[-27]+RC[-24]+RC[-21])," ","per Day"," ","/"," ",R1C[-92]," ",RC[-92]," ","/"," ","No Out Date"),))))

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Formel Zeilenumbrüche
13.09.2016 18:01:47
Daniel
Hi
was hast du genau vor?
ich vermute dass du die Formel per Makro in eine Zelle schreiben willst.
das müsste bei längeren Formeln so funktionieren:
Cells(1, 1).FormulaR1C1 = "=IF(AND(RC[-29]0,RC[-26]=0," & _
"RC[-76]=""HAMBK"",LEFT(RC[-16],16)""ZWISCHENRECHNUNG"") " & _
",CONCATENATE("Storage Days"","" "",""="","" "",RC[-97],""...

also die Teilstrings für jede Zeile immer mit Anführungszeichen begrenzen (am Anfang und am Ende), das & als Verbindung nicht vergssen und bei Zeilenende dann Leerzeichen + Unterstrich.
Die Anführungzeichen, die zur Formel gehören nüssen immer verdoppelt werden.
Einfache Anführungszeichen begrenzen den Textstring.
Ich finde solche Monsterzeilen mit "_" aber eher ungünstig und bevorzuge die Variablen-Vairante.
Denn auch VBA-Zeilen die mit "_" umgebrochen werden, können nicht unbegrenzt lang sein, mit der Variable kann man die VBA-Zeilen auch bei längeren Formeln kurz halten:
dim FO as string
FO = "=erster Teil der formel"
FO = FO & "zweiter Teil der Formel"
FO = FO & "dritter Teil der Formel"
Cells(1, 1).Formula = FO
Allerdings ist deine Formel mit 1800 Zeichen sehr lang.
Excel kann zwar auch deutlich längere Formeln verarbeiten, aber beim Übertragen der Formel mit VBA nach Excel gibt es eine starke Begrenzug bezüglich der Länge und solche Formeln müssen deutlich kürzer sein.
Aber auch hier gibt es einen Trick:
Schreibe die Formel nicht als Formel in die Zelle, sondern als Text.
lasse hierzu den Formeltext nicht mit "=" beginnen, sondern mit einer Zeichenfolge, die in der Formel so nicht vorkommt: "xxxIF(AND...")´
Beim Schreiben von Texten per VBA gibt es keine VBA-spezifischen Längenbeschränkungen wie beim Schreiben von Formeln.
Ersezte dann in der Zelle mit der Menüfunktion ERSETZEN bzw mit dem VBA-Befehl: REPLACE das "xxx" durch das "=".
Damit läuft das Erstellen der Formel in Excel und es gilt die Excelspezifische Längenbeschränkung, nicht die VBA-spezifische.
Wenn du das Replace per VBA ausführst, muss die Formel in Englisch mit A1-Zellbezügen geschrieben sein.
Wenn du das Ersetzen manuell machst, in deutsch (Landessprache)
Gruß Daniel
Anzeige
Max 24 Zeilen mit _ hintereinander! ;-] orT
13.09.2016 18:08:03
Luc:-?
(Falls ich mich recht erinnere!)
Gruß, Luc :-?
Besser informiert mit …
AW: VBA Formel Zeilenumbrüche
13.09.2016 18:48:45
Henry
Hallo Daniel,
genau richtig. Werde diese Formel in eine Range einfügen.
die Variante mit den Strings klingt gut und werde ich gleich testen.
vielen Dank.
Gruss
Henry
AW: VBA Formel Zeilenumbrüche
13.09.2016 18:12:50
ChrisL
Hi Henry
Sub Ausgangslage()
x = "Hallo Welt"
End Sub

Sub gehtNICHT()
x = "Hallo _
Welt"
End Sub

Sub sollteFunktionierenTeil1()
x = "Hallo " & "Welt"
End Sub

Sub sollteFunktionierenTeil2()
x = "Hallo " & _
"Welt"
End Sub

Wobei es mich erstauenen würde, wenn du mit deiner Monsterformel glücklich wirst (zu lang und unübersichtlich). Wenn du Gänsefüsse in einem String verwendest, musst du die alle "Verdoppeln".
Sub Beispiel()
MsgBox "Hallo ""Verdoppele"" mich"
End Sub
Ich würde auf VBA umstellen...
If Bedingung Then
Else
End If
cu
Chris
Anzeige
AW: VBA Formel Zeilenumbrüche
13.09.2016 18:49:30
Henry
Hallo Chris,
vielen Dank, sehr gut erklärt.!
Gruss
Henry

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige