Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1424to1428
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

Formel kann nicht eingetragen werden

Formel kann nicht eingetragen werden
13.05.2015 17:12:52
grimmies
Hallo,
ich brauche nun mal eure Hilfe. Ich habe unten stehende Formel in einem etwas komplexeren Makro erstellt. Im Grunde soll diese Formel multilingual sein (auf unterschiedlichen Excelsprachen funktionieren). Bis ich das Array "SprachArray" eingebaut hatte, hat es auch funktioniert. Nun kommt aber die Fehlermeldung "Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler". Ich weiß nicht wie ich dieses Problem lösen soll. Da die Formel definitiv im Excel stehen muss, kann ich diese auch nicht rein über Makros berechnen.
Kurze Beschreibung zur Formel:
Sie prüft unterschiedliche Excelzellen nach Kriterien und gibt entsprechende Fehlermeldungen aus, wenn diese nicht erfüllt sind. Die Fehlermeldungen stehen im Array "SprachArray".
Ich hoffe mir kann jemand helfen. Ich verzweifle hier gerade. Danke schon jetzt für die Mühe.

ActiveCell.FormulaR1C1 = _
"=IF(AND(RC" & SP_E_KomplKasten & "=TRUE," _
& "RC" & SP_E_KorpBreite & "=""""),"""",IF(AND(" _
& "RC" & SP_E_KomplKasten & "=TRUE,ISERROR(VLOOKUP(" _
& "RC" & SP_E_KorpBreite & ",S_Breite,1,0))," _
& "RC" & SP_E_Rueckw & "" & SprachArray(144, SP) & ")" _
& "," & SprachArray(93, SP) & ",IF(AND(" _
& "RC" & SP_E_Zarge & "=78," _
& "RC" & SP_E_KorpBreite & "600," _
& "RC" & SP_E_KorpBreite & "900," _
& "RC" & SP_E_Rueckw & "=" & SprachArray(144, SP) & "),"""",IF(AND(" _
& "RC" & SP_E_KomplKasten & "=TRUE,ISERROR(VLOOKUP(" _
& "RC" & SP_E_KorpBreite & ",S_Breite,1,0))=FALSE," _
& "RC" & SP_E_Rueckw & "" & SprachArray(177, SP) & ",AND(" _
& "RC" & SP_E_KorpBreite & "=550," _
& "RC" & SP_E_InnenAlu & "0)=FALSE)" _
& "," & SprachArray(94, SP) & ",IF(AND(ISERROR(VLOOKUP(" _
& "RC" & SP_E_KorpBreite & ",S_Breite,1,0))," _
& "RC" & SP_E_Rueckw & "=" & SprachArray(177, SP) & ")" _
& "," & SprachArray(95, SP) & ","""")))))"

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel kann nicht eingetragen werden
13.05.2015 17:36:58
Daniel
Hi
die Formel ist wahrscheinlich zu lang, um sie von VBA nach Excel zu übertragen.
vielleicht ist sie auch sogar zu lang, um sie überhaupt im VBA-Editor in einer Zeile darzustellen (auch mit Umbruch _ gibt es da beschränkungen)
mein Tip:
1. erstelle den Formelstring nicht in einer VBA-Zeile, sondern schreibe erstelle ihn Stückweise in einer Variablen, damit vermeidest du das überschreiten der maximalen Länge einer VBA-Befehlszeile.
strFormel = "=Formel Teil 1"
strFormel = strFormel & "Formel Teil 2"
strFormel = strFormel & "Formel Teil 3"
usw
2. die maximale Länge, die eine Formel in Excel haben darf ist deutlich länger als die Länge, die VBA an Excel übertragen darf. (die Zahlen sind zwar falsch, aber wenn in Excel die Formel 2000 Zeichen lang sein darf, kannst du mit VBA maximal eine 1000-Zeichen-Formel in Excel schreiben).
Diese Einschränkung kann man mit folgendem Trick umgehen:
- lasse den Formelstring nicht mit "=" beginnen, sondern mit "xxx=" (oder einer anderen Zeichenfolge, die in der Formel nicht vorkommt)
Damit überträgst du dann keine Formel, sonderen einen normalen Text und dieser darf deutlich länger sein.
- Ersetze anschließend mit der Ersetzen-Funktion (Range(...).Replace) das "xxx" durch nichts.
Excel wird dann diesen Text erneut überprüfen und feststellen, dass es eine Formel ist (beginnt mit "=") und diese berechen. Da das jetzt aber Excel macht und nicht VBA (VBA triggert nur die Excelfunktion an) gilt wieder die Längenbeschränkung von Excel ;-)
damit das funktioniert, muss der Formelstring in internationaler Schreibweise (englisch) und A1-Zellbezügen erstellt werden.
Dh wenn die Formel in mehrere Zellen gleichzeitig geschrieben werden soll, müsstest du folgende Reihenfolge einhalten:
- Formel als Text in die erste Zelle schreiben
- Text mit Replace in Formel wandeln
- Formel kopieren und die weiteren Zellen einfügen.
Gruß Daniel

Anzeige
AW: Formel kann nicht eingetragen werden
14.05.2015 12:28:18
grimmies
Danke für die Info, werde ich mal nach dem WE probieren. Vielleicht ist es die Lösung.

AW: Formel kann nicht eingetragen werden
19.05.2015 15:58:27
grimmies
So nun habe ich den Fehler gefunden und die Formel funktioniert wieder. Habe die " vergessen bzw. nicht beachtet. Da ich in der Formel einen Satz ausgeben möchte, muss ich vor dem Textblock drei Gänsefüschen setzen, dann klappt es auch. Trotzdem Danke Daniel für deine Unterstützung. Das mit dem zu langen VBA-Code wusste ich nicht. Habe ich mir gemerkt, auch das mit dem Replace war mir noch nicht so bekannt.
Der richtige Code lautet dann so.
ActiveCell.FormulaR1C1 = _
"=IF(AND(RC" & SP_E_KomplKasten & "=TRUE," _
& "RC" & SP_E_KorpBreite & "=""""),"""",IF(AND(" _
& "RC" & SP_E_KomplKasten & "=TRUE,ISERROR(VLOOKUP(" _
& "RC" & SP_E_KorpBreite & ",S_Breite,1,0))," _
& "RC" & SP_E_Rueckw & "" & SprachArray(144, SP) & ")" _
& ",""" & SprachArray(93, SP) & """,IF(AND(" _
& "RC" & SP_E_Zarge & "=78," _
& "RC" & SP_E_KorpBreite & "600," _
& "RC" & SP_E_KorpBreite & "900," _
& "RC" & SP_E_Rueckw & "=" & SprachArray(144, SP) & "),"""",IF(AND(" _
& "RC" & SP_E_KomplKasten & "=TRUE,ISERROR(VLOOKUP(" _
& "RC" & SP_E_KorpBreite & ",S_Breite,1,0))=FALSE," _
& "RC" & SP_E_Rueckw & "" & SprachArray(177, SP) & ",AND(" _
& "RC" & SP_E_KorpBreite & "=550," _
& "RC" & SP_E_InnenAlu & "0)=FALSE)" _
& ",""" & SprachArray(94, SP) & """,IF(AND(ISERROR(VLOOKUP(" _
& "RC" & SP_E_KorpBreite & ",S_Breite,1,0))," _
& "RC" & SP_E_Rueckw & "=" & SprachArray(177, SP) & ")" _
& ",""" & SprachArray(95, SP) & ""","""")))))"
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige