PDA

Vollständige Version anzeigen : Formeldynamisierung / Stringproblem


eggstrovaganza
21.02.2008, 12:16
Hallo zusammen!

Ich verzweifel an einem kleinen VBA-Problem. Vielleicht hat jemand von euch Lust und Zeit sich das mal anzusehen.

Ich muss in abhängigkeit des aktuellen Datums die Formel in einer Zelle dynamisch anpassen.
Soweit kein Problem dachte ich. Scheint aber leider doch eins zu sein.
Im folgenden Codeabschnitt
------------------------------------------------------------------
dieFormel_A = "=WENN(ISTFEHLER((" & aEbPlan_FS & "-(SUMME(" & aUmsatzVkOp_FS & ")-SUMME(" & aBruttogewinnOp_FS & "))+SUMME(" & aWeEpOp_FS & "))/((SUMME(" & aUmsatzVkPlan_FS & ")-SUMME(" & aBruttogewinnPlan_FS & "))+(SUMME(" & aUmsatzVkOp_FS & ")-SUMME(" & aBruttogewinnOp_FS & "))));"""";(" & aEbPlan_FS & "-(SUMME(" & aUmsatzVkOp_FS & ")-SUMME(" & aBruttogewinnOp_FS & "))+SUMME(" & aWeEpOp_FS & "))/((SUMME(" & aUmsatzVkPlan_FS & ")-SUMME(" & aBruttogewinnPlan_FS & "))+(SUMME(" & aUmsatzVkOp_FS & ")-SUMME(" & aBruttogewinnOp_FS & ")))"

formelAddresse_A = Cells(zBsqFormel_A, sBsqFormel).Address

Range(formelAddresse_A).FormulaLocal = dieFormel_A
------------------------------------------------------------------
hab ich gleich doppelten Ärger. Zum Einen steht im String "dieFormel_A" nicht der gesammte Text, sondern nur exakt 255 Zeichen, zum Anderen bekomme ich in der letzten Zeile eine "Laufzeit '1004' Anwendungs- oder Objektdefinierter Fehler" Meldung.

Hat jemand von euch eine Idee wo das Problem liegt?

Ich sag schonmal danke,

Stefan

jinx
21.02.2008, 17:04
<font size="2" face="Century Gothic">Moin, Stefan,

gem. Maximale Länge von Formeln (http://www.xlam.ch/xlimits/xllimit4.htm) ist die Länge 1024 Zeichen, allerdings weist Philipp auf Probleme bei langen Formeln mit externen Zellbezügen hin.

Wenn die Variable nur als String dimensiert wurde und es mit einer Variablen nicht klappt, den Text für die Formel in mehrere Variablen aufteilen oder die Variablennamen kürzen. Bitte beachten, dass die Strings der Variablen idealerweise an den Verknüpfungszeichen ( & ) "aufgebrochen" werden.</font>

IngGi
21.02.2008, 17:10
Hallo Stefan,

in der Formel fehlt auf jeden Fall eine schließende Klammer. Wenn du ganz am Ende der Formel eine schließende Klammer anfügst, ergibt das zumindest einmal einen syntaktisch korrekten Formelaufbau - was nicht ausschließt, dass die Klammer dennoch an anderer Stelle fehlt.

Mehr läßt sich mit deinen Angaben nicht sagen.

Gruß Ingolf

EarlFred
21.02.2008, 18:40
Hallo Stefan,

diese ganzen kryptischen Namen "aUmsatzVkOp" usw. sind aber schon als Parameter in Deinem Code belegt, oder? Oder willst Du damit auf benannte Bereiche im Tabellenblatt zugreifen?
Wenn es Variable sein sollen, prüf bitte, ob diese auch einen Wert enthalten, denn wenn sie leer sind, erzeugen sie den Fehler.
Wenn es benannte Bereiche sein sollen, sind Anführungszeichen und "&" zuviel:
Anstelle z. B.
[...]SUMME(" & aUmsatzVkOp_FS & ")[...]
müsste es lauten:
[...]SUMME(aUmsatzVkOp_FS)[...]

Grüße
EarlFred

Styrkar
22.02.2008, 06:46
Hi,

was noch bei der Fehlersuche helfen könnte ist die Generierung der Formel aufzuteilen:

Nenner = aEbPlan_FS & "-(SUMME(" & aUmsatzVkOp_FS & ")-SUMME(" & aBruttogewinnOp_FS & "))+SUMME(" & aWeEpOp_FS & ")"
Teiler = "(SUMME(" & aUmsatzVkPlan_FS & ")-SUMME(" & aBruttogewinnPlan_FS & "))+(SUMME(" & aUmsatzVkOp_FS & ")-SUMME(" & aBruttogewinnOp_FS & "))"
dieFormel_A = "(" & Nenner & ")/(" & Teiler & ")"
dieFormel_A = "=WENN(ISTFEHLER(" & dieFormel_A & ");"""";" & dieFormel_A & ")"