Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variablennamen aus Formeln extrahieren

Forumthread: Variablennamen aus Formeln extrahieren

Variablennamen aus Formeln extrahieren
02.02.2003 16:56:15
Richard
Hallo,
ich habe folgendes Problem: in einer userform (mit ca. 300 Feldern) stehen Werte in Textfeldern (z.B: Feld A), die von manchmal (d.h. fallabhängig und nicht immer) von Werten in anderen Textfeldern abhängen z.B: A = tan(B)*C. Das Feld A ist in diesem Moment für den User gesperrt (.enabled = false). Wird Feld A nicht durch eine Formel berechnet kann der User darauf zugreifen und selbst Werte eingeben. Die Formel, bzw. der erste Wert des Textfeldes werden aus einem Sheet geladen. Im Falle der Formel soll der Wert von Feld A nun upgedatet werden, wenn sich die WErte der Variablen B oder C (stehen ebenfalls in einem Textfeld) ändern. Ich hoffe das ist noch zu verstehen.
Nun zum eigentlichen Problem:
Alle Werte zu aktualisieren wenn sich in irgendeinem Textfeld was ändern würde , würde zu lange dauern. Deshalb habe ich mir folgende Lösung vorgestellt:
Beim Einlesen der WErte in die Userform prüfe ich, welche Textfelder per Formel berechnet werden. Aus diesen Formeln extrahiere ich die Variablen (z.B. B und C). Wenn sich nun die Werte in den Textfeldern B und C ändern, berechne ich A neu.
Frage: wenn die Formel als String vorliegt (=tan(B)+C) wie kann ich die Namen B und C dann extrahieren? Gibt es eine Funktion, die automatisch die keywords erkennt?

Oder gibt es vielleicht einen viel besseren Weg.
Danke für Eure Tipps
Richard

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Variablennamen aus Formeln extrahieren
03.02.2003 10:09:39
andre

hallo richard,

das ist eine schwierige aufgabe - weniger wegen des codes, sondern wegen der zuordnung, was eine variable ist und vor allem auch, wie du eine änderung feststellen willst.

if b <> b geht da nicht. da musst du ein b_alt mitziehen ...

Lösungsansatz Variablenfeststellung:
--> eine variable wird daran erkannt, dass klammern drum oder ein leerzeichen davor und kein zeichen oder ein leerzeichen dahinter ist ... (mal in vba alle varianten durchgehen, vba setzt ja automatisch leerzeichen ..)
if ( "(" davor and ")" dahinter )or ( " " davor and " " dahinter ) or ( " " davor and "" dahinter ) or ( ... ) ...

ansonsten - sind es textfelder aus dem userform ? dann nehme doch das change - sub vom textfeld, das erkennt doch, dass sich was geändert hat ! und wenn du erst rechnen willst, wenn alle textfelder geändert sind, dann setze in jedem Textfeld einen schalter oder zähle eine variable hoch, die nach der berechnung auf null gesetzt wird.

etwa so:
modul:
Public zähler%
sub berechne
textbox3.value = cdbl(textbox1.text) * cdbl(textbox2.text)
zähler=0
end sub
userform:
Private Sub TextBox1_Change()
zähler=zähler+1
if zähler = 2 then berechne
End Sub
Private Sub TextBox2_Change()
zähler=zähler+1
if zähler = 2 then berechne
End Sub

gruss andre


Anzeige
Re: Variablennamen aus Formeln extrahieren
03.02.2003 10:10:09
andre

hallo richard,

das ist eine schwierige aufgabe - weniger wegen des codes, sondern wegen der zuordnung, was eine variable ist und vor allem auch, wie du eine änderung feststellen willst.

if b <> b geht da nicht. da musst du ein b_alt mitziehen ...

Lösungsansatz Variablenfeststellung:
--> eine variable wird daran erkannt, dass klammern drum oder ein leerzeichen davor und kein zeichen oder ein leerzeichen dahinter ist ... (mal in vba alle varianten durchgehen, vba setzt ja automatisch leerzeichen ..)
if ( "(" davor and ")" dahinter )or ( " " davor and " " dahinter ) or ( " " davor and "" dahinter ) or ( ... ) ...

ansonsten - sind es textfelder aus dem userform ? dann nehme doch das change - sub vom textfeld, das erkennt doch, dass sich was geändert hat ! und wenn du erst rechnen willst, wenn alle textfelder geändert sind, dann setze in jedem Textfeld einen schalter oder zähle eine variable hoch, die nach der berechnung auf null gesetzt wird.

etwa so:
modul:
Public zähler%
sub berechne
textbox3.value = cdbl(textbox1.text) * cdbl(textbox2.text)
zähler=0
end sub
userform:
Private Sub TextBox1_Change()
zähler=zähler+1
if zähler = 2 then berechne
End Sub
Private Sub TextBox2_Change()
zähler=zähler+1
if zähler = 2 then berechne
End Sub

gruss andre


Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige