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

VBA-Funktion: WECHSELN für Formeln

VBA-Funktion: WECHSELN für Formeln
09.03.2022 20:46:17
Ben.Blake
Hallo,
ich habe mal wieder ein Problem, mit dem ich nicht weiterkomme...
Ich habe öfter mal den Fall, daß ich lange Teilfunktionen in langen Formeln benötige und das auch gern 5 mal oder so, was die Formel dann natürlich ungeheuer aufbläht. Also dachte ich mir, das wäre doch der perfekte Anwendungsfall, um mal eine Funktion zu bauen, welche es quasi ermöglicht, in einer Formel Variablen für diese Teilfunktionen zu nutzen. Es über Namen zu machen mag manchmal funktionieren, wenn es aber dann darum geht verschiedene Bereiche zu nutzen, artet das dann auch gern mal in Änderungsorgien für die Übertragung aus (z.B. habe ich eine umfangreiche Formel, die ich in vier Bereichen mit absoluten Bezügen benötige, was kein Problem ist, wenn ich die Formel auf den ersten Bereich verteile, dann die $ lösche und dann in die anderen Bereiche kopiere, da sind dann die Relationen wieder die gleichen). Was so richtig passen würde, wäre eine WECHSELN-Funktion für Formeln.
Da habe ich also was in VBA zusammengeschrieben:

Public Function WECHSELN_F(Formel As String, Variable As String, Ersatz_Formel)
Dim Fx$, V$, nFx$, Str As String
Dim i As Long
Fx = Formel
V = Variable
nFx = Ersatz_Formel
'Str = "="
Str = ""
For i = 1 To Len(Fx) - Len(V) + 1
If Mid(Fx, i, Len(V)) = V Then
Str = Str & nFx
Else
Str = Str & Mid(Fx, i, 1)
End If
Next i
WECHSELN_F = Evaluate(Str)
'WECHSELN_F = Str
End Function
Dabei gibt es nun leider ein paar Probleme:
1. Die fertige Formel wird nur als String ausgegeben und nicht berechnet - deshalb der Versuch mit dem Evaluate
2. für die Evaluate-Methode ist die String-Länge auf 256 Zeichen begrenzt
3. Die Formel muß mit " eingegeben werden, sonst beschwert sich Excel über unbekannte Namen, noch bevor die Function ausgeführt wird - das ist natürlich blöd, weil die Stringlänge ja wieder auf 256 Zeichen beschränkt ist und ich deshalb dann eine Formel x-fach zerstückeln muß
Gibt es keine Möglichkeit, die Berechnung der Formel im VBA zu übernehmen und den fertigen Wert auszuspucken? Und wenn es sich vermeiden ließe, die Formel als String eingeben zu müssen, wäre das auch hilfreich, aber da glaube ich schon, daß das nicht geht, weil Excel alles auswertet, was geht, bevor es die VBA-Funktion startet...
Es wäre wirklich schön, wenn da jemand eine Lösung für die Berechnung wüßte, ich hab da jetzt einige Zeit herumgesucht und nix gefunden...
Vielen Dank schonmal!
Ben

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Funktion: WECHSELN für Formeln
09.03.2022 20:51:40
Daniel
HI
"Ich habe öfter mal den Fall, daß ich lange Teilfunktionen in langen Formeln benötige und das auch gern 5 mal oder so, was die Formel dann natürlich ungeheuer aufbläht."
schau dir mal die neue Funktion LET an. die ist für genau diesen Fall gedacht, dass man innerhalb einer Formel öfters verwendete Teilformeln oder Bezüge durch Variablen ersetzen kann.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige