Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
212to216
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
212to216
212to216
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige