Supportnet / Forum / Tabellenkalkulation
Richtige Trennung einer Formel im VBA-Code
Frage
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 1 von rainberg
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
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
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
Hallo son_quatsch,
hast Du Deinen Quatsch auch getestet? :-))
Gruß
Rainer
hast Du Deinen Quatsch auch getestet? :-))
Gruß
Rainer
Antwort 4 von Ron11
hallo,
danke für eure Hilfe. Ich habe den dritten (ein ganz anderen) Weg gewählt.
Gruß Ron
danke für eure Hilfe. Ich habe den dritten (ein ganz anderen) Weg gewählt.
Gruß Ron
Antwort 5 von son_quatsch
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.hast Du Deinen Quatsch auch getestet?
Antwort 6 von meinTipp
Ja, aber Strings werden nicht mit + sondern mit & zusammengefügt (verkettet).
Gruss Rolf
Gruss Rolf
Antwort 7 von son_quatsch
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)
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
hi all
es geht natuerlich beides + wie & mir ist es unverstaendlich wie man darueber streiten kann,da es sich leicht ausprobieren liesse :-))
gruss nighty
es geht natuerlich beides + wie & mir ist es unverstaendlich wie man darueber streiten kann,da es sich leicht ausprobieren liesse :-))
gruss nighty

