Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1544to1548
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

Größenbeschränkung Formelabfrage vba

Größenbeschränkung Formelabfrage vba
09.03.2017 14:33:45
Karsten
Hallo,
ich habe eine ziemliche lange "wenn(und" Abfrage per makro. Wenn ich die Formel per Hand eingebe funktioniert diese ohne Probleme, aber wenn ich es als Makro laufen lasse (per Recorder aufgenommen) bekomme ich nur die Formel zurückgespielt. Die Formatierung ist okay, da in einer Nebenzelle eine etwas kürzere Abfrage ohne Probleme läuft und mir den angefragten Wert ausgibt.
Gibt es eine Beschränkung wie lang eine Formel in vba sein darf und wie könnte man dies ggf umgehen?
Anbei die vba Abfrage:
Range("O5").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(IF(AND(RC[-2]>3,VLOOKUP(C[-9],DATA!C6:C16,11,FALSE)=Kalender!R6C[-3]),VLOOKUP(C[-14],DATA!C6:C15,10,FALSE)+1,IF(VLOOKUP(C[-9],DATA!C6:C16,11,FALSE)>=1,VLOOKUP(C[-9],DATA!C6:C15,10,FALSE),IF(AND(RC14=1,(RC21+RC23+RC25+RC27)/Kalender!R1C11>=Kalender!R6C[-4]),VLOOKUP(C[-14],DATA!C6:C15,10,FALSE)+1,IF(AND(VLOOKUP(C[-9],DATA!C6:C15,10,FALSE) Danke und die Runde
Karsten

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Größenbeschränkung Formelabfrage vba
09.03.2017 14:57:29
Werner
Hallo Karsten,
Die Formellänge packt der Rekorder nicht.
Folgende Lösung von Daniel:
Hi
wenn du die Eingabe dieser Formel als Makro benötigst, dann kannst du das nicht aufzeichnen, weil die Formel für den Recorder zu lang ist.
Wenn du die Formel trotzdem im Makro haben willst, dann kannst du folgendermassen vorghehen:
- Formel von Hand in die Zelle eintragen
- Formel markieren
- in den VBA-Editor und dort ins Direktfenster wechseln
- dort den Befehl eintippen: ?Selection.FormulaLocal
- das Ergebnis kannst du dann in deinen Makrocode reinkopieren:
Range("A1").FormulaLocal = "hier deine Formel"
du musst dabei allerdings folgendes Beachten:
Anführungszeichen, die zur Formel gehören, müssen verdoppelt werden, damit der VBA-Editor das richtig erkennen kann:
Range("A1").FormulaLocal = "=""In Zelle A2 steht: ""&A2"
bei einer Formel wie deiner kannst du dazu die Funktion ERSETZEN nutzen, dazu den Formeltext ZWISCHEN den äusseren Anführungszeichen Markieren und auf BEARBEITEN - ERSEZTEN klicken und dann "markierten TExt" auswählen.
Gruß Werner
Anzeige
AW: Größenbeschränkung Formelabfrage vba
09.03.2017 15:05:57
Karsten
SUPER!!! Danke
Gerne u. Danke für die Rückmeldung....
12.03.2017 14:42:43
Werner
Karsten....
...wobei der Dank wohl eher Daniel gebührt.
Gruß Werner
AW: Größenbeschränkung Formelabfrage vba
09.03.2017 15:09:01
Daniel
Hi
es gibt in VBA mehrere diesbezügliche Beschränkungen.
tatsächlich ist es so, dass eine von Hand eingegebene Formel deutlich länger sein darf als eine Formel, die per VBA geschrieben wird (ich meine c.a. 4000 zu 1000 zeichen, auch Versionsabhängig)
die zweite Einschränkung betrifft den VBA-Editor. eine Codezeile darf eine bestimmte Länge nicht überschreiten.
das Limit des VBA-Editors kannst du relativ einfach umgehen:
- erstelle den Formeltext in einer Variablen in mehrern Schritten:
dim FO as String
FO = "=Teilformel1"
FO = FO & "Teilformel2"
FO = FO & "Teilformel3"
usw
Range("O5").FormulaR1C1 = FO
wenn das erste Limit umgangen werden soll, wird's etwas komplizierter.
hierszu muss die Formel als normaler Text in die Zelle geschrieben werden.
Das kann man dadurch erreichen, dass man statt dem "=" eine andere Zeichenfolge, welche sonst nicht in der Formel vorkommt, an den Anfang stellt.
Dann ist die Eingabe keine Formel, sondern ein normaler Text.
dann ersetzt man mit der Menüfunktion ERSETZTEN (in VBA dann Replace) die Zeichenfolge durch das Gleichheitszeichen.
Excel wird dann den Text in eine Formel wandeln. Da jetzt Excel diese Umwanlung macht, gilt die Längenbeschränkung von Excel und nicht die von VBA.
Der Formeltext muss dann allerdings in der A1-Addressierungsart geschrieben werden, nicht in R1C1.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige