Es ist komplexer als es scheint. Ein kx + m kann Max 7 Operatoren und min 1 Operator haben, wenn ich nicht falsch liege. Und in einem solchen Szenario wird es sehr komplex, die "K" - und "M" -Werte zu erhalten. - Siddharth Rout 33 Minuten vor
Aufbauend auf meinen Kommentar in duffymo der Post
Dieser Schnappschuss die verschiedenen Kombinationen zeigt, dass „kx + m“ haben

Und wie bereits erwähnt, ist es sehr komplex zu erreichen, was Sie wollen. Hier ist mein Schwachversuch um gerade "K" zu extrahieren. Dieser Code ist in keiner Weise classy :(Auch habe ich den Code mit verschiedenen Szenarien nicht getestet, so dass es mit anderen fehlschlagen kann. Allerdings gibt es Ihnen eine faire Idee, wie Sie dieses Problem anzugehen. Sie müssen zwicken Sie es mehr, um die genauen Ergebnisse zu erhalten, die Sie wollen.
CODE (ich bin für 7 mögliche Kombinationen in diesem Code testen.Es funktioniert für diese 7 aber könnte/wird für andere scheitern)
Option Explicit
Sub Sample()
Dim StrCheck As String
Dim posStar As Long, posBrk As Long, pos As Long, i As Long
Dim strK As String, strM As String
Dim MyArray(6) As String
MyArray(0) = "-k*(-x)+(-m)*(-2)"
MyArray(1) = "-k*x+(-m)*(-2)"
MyArray(2) = "-k(x)+(-m)*(-2)"
MyArray(3) = "-k(x)+(-m)(-2)"
MyArray(4) = "-kx+m"
MyArray(5) = "kx+m"
MyArray(6) = "k(x)+m"
For i = 0 To 6
StrCheck = MyArray(i)
Select Case Left(Trim(StrCheck), 1)
Case "+", "-"
posBrk = InStr(2, StrCheck, "(")
posStar = InStr(2, StrCheck, "*")
If posBrk > posStar Then '<~~ "-k*(-x)+(-m)*(-2)"
pos = InStr(2, StrCheck, "*")
If pos <> 0 Then
strK = Mid(StrCheck, 1, pos - 1)
Else
strK = Mid(StrCheck, 1, posBrk - 1)
End If
ElseIf posBrk < posStar Then '<~~ "-k(-x)+(-m)*(-2)"
pos = InStr(2, StrCheck, "(")
strK = Mid(StrCheck, 1, pos - 1)
Else '<~~ "-kx+m"
'~~> In such a case I am assuming that you will never use
'~~> a >=2 letter variable
strK = Mid(StrCheck, 1, 2)
End If
Case Else
posBrk = InStr(1, StrCheck, "(")
posStar = InStr(1, StrCheck, "*")
If posBrk > posStar Then '<~~ "k*(-x)+(-m)*(-2)"
pos = InStr(1, StrCheck, "*")
If pos <> 0 Then
strK = Mid(StrCheck, 1, pos - 2)
Else
strK = Mid(StrCheck, 1, posBrk - 1)
End If
ElseIf posBrk < posStar Then '<~~ "k(-x)+(-m)*(-2)"
pos = InStr(1, StrCheck, "(")
strK = Mid(StrCheck, 1, pos - 2)
Else '<~~ "kx+m"
'~~> In such a case I am assuming that you will never use
'~~> a >=2 letter variable
strK = Mid(StrCheck, 1, 1)
End If
End Select
Debug.Print "Found " & strK & " in " & MyArray(i)
Next i
End Sub
SCHNAPPSCHUSS

Es ist nicht viel, aber ich hoffe, dass diese Sie in dem richtigen Weg bekommt ...
+! für eine interessante Frage :) –