Richtige Trennung einer Formel im VBA-Code
Hallo VBA-*Z*s,
eine Frage an euch. Ich lasse per VBA eine ellen lange Wenn-Formel erstellen, die so aussieht: (nur ein Teil davon)
ActiveCell.FormulaR1C1 = _
"=IF(RC[1]<>"""",1,0)+IF(RC[3]<>"""",1,0)+IF(RC[5]<>"""",1,0)+IF(RC[7]<>"""",1,0)+IF(RC[9]<>"""",1,0)+IF(RC[11]<>"""",1,0)+IF(RC[13]<>"""",1,0)+IF(RC[15]<>"""",1,0)+IF(RC[17]<>"""",1,0)+IF(RC[19]<>"""",1,0)"
Im VBA-Code geht diese nun ja ewigs weit nach rechts. Wie kann ich die richtig trennen, dass diese über z.b. 6 Codezeilen geschrieben wird wie z.b. so:
ActiveCell.FormulaR1C1 = _
"=IF(RC[1]<>"""",1,0)+IF(RC[3]<>"""",1,0) _
+IF(RC[5]<>"""",1,0))+IF(RC[7]<>"""",1,0) _
+IF(RC[9]<>"""",1,0))+IF(RC[11]<>"""",1,0) _
+IF(RC[13]<>"""",1,0)+IF(RC[15]<>"""",1,0) _
+IF(RC[17]<>"""",1,0)+IF(RC[19]<>"""",1,0)"
So sah meine Version aus welche aber zu Fehlermeldungen über den Debugger führte.
Wie trennt ich diese richtig?
Danke für eure Hilfe.
Gruß Ron
Antwort schreiben
Antwort 1 von rainberg vom 15.08.2020, 12:57 Options
Hallo Ron,
soviel ich weiß, kann innerhalb einer Berechnung keine Trennung durchgeführt werden.
Für Deine lange Formel gibt es bestimmt einen Ersatz, allerdings muss man den Hintergrund derselben ganauer kennen.
Gruß
Rainer
Antwort 2 von son_quatsch vom 15.08.2020, 13:16 Options
Das ganze ist doch bloß Text - und Text kann in VB (wie in vielen anderen Sprachen) nicht über Umbrüche zugewiesen werden - du müsstest also mehrere Textfolgen draus machen:
ActiveCell.FormulaR1C1 = _
"=IF(RC[1]<>"""",1,0)+IF(RC[3]<>"""",1,0)" + _
"+IF(RC[5]<>"""",1,0))+IF(RC[7]<>"""",1,0)" + _
"+IF(RC[9]<>"""",1,0))+IF(RC[11]<>"""",1,0)" + _
"+IF(RC[13]<>"""",1,0)+IF(RC[15]<>"""",1,0)" + _
"+IF(RC[17]<>"""",1,0)+IF(RC[19]<>"""",1,0)"
Antwort 3 von rainberg vom 15.08.2020, 14:34 Options
Hallo son_quatsch,
hast Du Deinen Quatsch auch getestet? :-))
Gruß
Rainer
Antwort 4 von Ron11 vom 18.08.2020, 13:01 Options
hallo,
danke für eure Hilfe. Ich habe den dritten (ein ganz anderen) Weg gewählt.
Gruß Ron
Antwort 5 von son_quatsch vom 18.08.2020, 13:13 Options
Zitat:
hast Du Deinen Quatsch auch getestet?
Während und nach dem Tippen nicht. Jetzt ja - und klappt auch. Sollte mir dein Post etwa sagen, dass dem nicht so ist? Wenn ja, warum? Wie ich es beschrieben habe: es ist eine einfache Zuweisung von Text - und Text kann man immer aufteilen aber nie über mehrere Zeilen hinweg schreiben.
Antwort 6 von meinTipp vom 18.08.2020, 13:17 Options
Ja, aber Strings werden nicht mit + sondern mit & zusammengefügt (verkettet).
Gruss Rolf
Antwort 7 von son_quatsch vom 18.08.2020, 13:23 Options
Du hast recht, das habe ich in der Tat übersehen :)
Bleibt die Frage, warum es trotzdem geklappt hat - denn in der Tabelle findet sich wie gewünscht dann in der aktiven Zelle die Formel
=WENN(C4<>"";1;0)+WENN(E4<>"";1;0)+WENN(G4<>"";1;0)+WENN(I4<>"";1;0)+WENN(K4<>"";1;0)+WENN(M4<>"";1;0)+WENN(O4<>"";1;0)+WENN(Q4<>"";1;0)+WENN(S4<>"";1;0)+WENN(U4<>"";1;0)
Antwort 8 von nighty vom 18.08.2020, 14:22 Options
hi all
es geht natuerlich beides + wie & mir ist es unverstaendlich wie man darueber streiten kann,da es sich leicht ausprobieren liesse :-))
gruss nighty