AW: imaginär
07.01.2004 09:56:16
Andi
Hallo Sven,
ich hab' den Thread nur überflogen, weiss daher nicht, ob ich Dir jetzt wirklich weiterhelfe, aber ich hab' vor einiger Zeit, nur mal so zum VBA üben, ein kleines Makro gestrickt, das aus einer komplexen Zahl, die als Text eingegeben wird, den Real- und Imaginärteil als double-Wert ermittelt. Allerdings kann das Makro mit Polarkoordinaten nix anfangen, man muss die komplexe Zahl in der kartesischen Form eingeben.
Würd' mich freuen, wenn das Makro vielleicht bei Dir noch einen praktischen Nutzen entfalten könnte.
So sieht' jedenfalls aus:
Private Sub Kompl()
Dim komplex As String
Dim Re As String
Dim Im As String
Dim nRe As Double
Dim nIm As Double
Dim zaehlerbeginn As Integer
Dim zaehler As Integer
Dim zaehlerstand As Integer
Dim posRe As Boolean
Dim posIm As Boolean
komplex = Cells(1, 1).Value
If Left(komplex, 1) = "+" Then
posRe = True
zaehlerbeginn = 2
ElseIf Left(komplex, 1) = "-" Then
posRe = False
zaehlerbeginn = 2
Else
posRe = True
zaehlerbeginn = 1
End If
For zaehler = zaehlerbeginn To Len(komplex)
If Mid(komplex, zaehler, 1) <> "+" And Mid(komplex, zaehler, 1) <> "-" Then
Re = Re & Mid(komplex, zaehler, 1)
ElseIf Mid(komplex, zaehler, 1) = "+" Then
posIm = True
zaehlerstand = zaehler + 1
Exit For
Else
posIm = False
zaehlerstand = zaehler + 1
Exit For
End If
Next zaehler
For zaehler = zaehlerstand To Len(komplex)
If Mid(komplex, zaehler, 1) = "j" Then
zaehlerstand = zaehler + 1
Exit For
End If
Next zaehler
For zaehler = zaehlerstand To Len(komplex)
Im = Im & Mid(komplex, zaehler, 1)
Next zaehler
nRe = Val(Re)
nIm = Val(Im)
If posRe = False Then nRe = nRe - (2 * nRe)
If posIm = False Then nIm = nIm - (2 * nIm)
Cells(3, 1).Value = nRe
Cells(4, 1).Value = nIm
End Sub
Schönen Gruß
Andi