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

Text selektieren

Text selektieren
Ludwig
Hallo Experten
Eine Formel wird in ein Textfeld eingegeben, z.B.: c^2= a^2+b^2
Nun möchte ich die Variablen herauslesen und diese zuordnen:
Var1.text= c
Var2.text= a
Var3.text= b
...
Bei einer nächsten Formel sind es natürlich andere und vielleicht auch mehrere Variablen!
Wie könnte der Code in VBA dafür aussehen die Variablennamen aus dem String zu selektieren?
Für die Antwort vielen Dank im voraus!
MfG
L.Hellenthal

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Funktionsterm nach Variablen analysieren
24.06.2010 11:57:26
NoNet
Hallo Ludwig,
wenn man davon ausgeht, dass die im Funktionsterm enthaltenen Variablen Mathematik-konform aus Buchstaben zwischen a und z bestehen, dann könnte man in einer Schleife einfach nach allen enthaltenen Buchstaben suchen.
Hier ein Beispiel : In einem UserForm sind folgende Controls enthalten :
txtTerm (TextBox zur Eingabe des Funktionsterms)
cmdAnalysieren (CommandButton, der den Funktionsterm nach Buchstaben untersucht)
cmdAbbruch (Commandbutton zum Abbrechen und entladen des UserForms)
Kopiere nun folgenden VBA-Code in das UserForm :
Private Sub cmdAnalysieren_Click()
Dim objColl As New Collection
Dim intI As Integer, strVar As String
On Error Resume Next 'um Fehler bei bereits gefundener Variable zu verhindern
For intI = 1 To Len(txtTerm.Value)
If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", UCase(Mid(txtTerm, intI, 1))) > 0 Then
objColl.Add Mid(txtTerm, intI, 1), Mid(txtTerm, intI, 1)
End If
Next
strVar = "Folgende Variablen wurden im Term gefunden :" & vbLf & vbLf
For intI = 1 To objColl.Count
strVar = strVar & objColl(intI) & vbLf
Next
MsgBox strVar
End Sub

Private Sub cmdAbbruch_Click()
Unload Me
End Sub
Screenshot des UserForms und Anzeige des analysierten Funktionsterms :
Userbild
Gruß, NoNet
Anzeige
AW: Funktionsterm nach Variablen analysieren
24.06.2010 12:04:13
Ludwig
Hallo NoNet
Super, vielen Dank so weit!
Es kommt vor, dass ich die Variablen auch schon mal so schreiben muß:
D1 oder D_1
Kann man das auch abfragen!
Vielen herzlichen Dank vorab!
MfG
Ludwig
Variablen mit Sonderzeichen analysieren
24.06.2010 12:20:06
NoNet
Hallo Ludwig,
hier der erweiterte Code, der auch Variablen mit Sonderzeichen oder Ziffern hinter dem Variablenbuchstaben erkennt :
Private Sub cmdAnalysieren_Click()
'Analysieren eines Funktionsterms (txtTerm) nach Variablen (Buchstaben)
'auch mit sonderzeichen oder Ziffern HINTER dem Variablenbuchstaben
'24.06.2010, NoNet - www.excelei.de
Dim objColl As New Collection
Dim intI As Integer, intZ As Integer
Dim strVar As String, strTemp As String
'Standard-Variablennamen : Buchstaben von A bis Z (auch kleingeschrieben)
Const strABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
'Diese Zeichen können hinter dem Buchstaben stehen,
'gehören ebenfalls zum Variablennamen :
Const strSonderzeichen = "0123456789_"
On Error Resume Next 'um Fehler bei bereits gefundener Variable zu verhindern
For intI = 1 To Len(txtTerm.Value)
If InStr(strABC, UCase(Mid(txtTerm, intI, 1))) > 0 Then
If intI = Len(txtTerm) Then
objColl.Add Mid(txtTerm, intI, 1), Mid(txtTerm, intI, 1)
Else
strTemp = Mid(txtTerm, intI, 1)
For intZ = intI + 1 To Len(txtTerm)
If InStr(strABC & strSonderzeichen, UCase(Mid(txtTerm, intZ, 1))) > 0 Then
strTemp = strTemp & Mid(txtTerm, intZ, 1)
intI = intZ
Else
intZ = Len(txtTerm)
End If
Next
objColl.Add strTemp, strTemp
End If
End If
Next
strVar = "Folgende Variablen wurden im Term gefunden :" & vbLf & vbLf
For intI = 1 To objColl.Count
strVar = strVar & objColl(intI) & vbLf
Next
MsgBox strVar
End Sub
Gruß, NoNet
Anzeige
AW: Variablen mit Sonderzeichen analysieren
24.06.2010 13:31:17
Ludwig
Hallo NoNet
Super, vielen Dank!
Eine letzte Frage:
Ich möchte die Variablen ButtonCaptions zugeordnet haben:
CB_Var1.Caption= objColl(1)
CB_Var2.Caption= objColl(2)
CB_Var3.Caption= objColl(3)
Wie geht das in der "For intI = 1 To objColl.Count"-Schleife?
Vielen Dank für die Antwort im voraus!
MfG
Ludwig
Controls("CB_Var" & intI).Caption= objColl(intI)
24.06.2010 14:02:33
NoNet
Hallo Ludwig,
die Zuordnung kannst Du über den Namen der Controls lösen, wenn diese fortlaufend nummeriert sind :
Controls("CB_Var" & intI).Caption= objColl(intI)
Gruß, NoNet

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige