wie kann ich am Einfachsten in VB herausfinden, wie viele Dezimalstellen, also gültige Werte nach dem Komma, eine ermittelte Zahl hat?
Herzlichen Dank für Eure Hilfe
...bruno
MsgBox Len(Range("A1").Value) - InStr(Range("A1").Value, ",")
Für Range("A1")... kannst du natürlich auch eine Variable einsetzen.
Hilfts?
Und mich würd mal interessieren, wieso du bei VBA = gut nich selbst drauf kommst? :)
Ciao
Thorsten
Sub test()
Dim ldbZahl As Double
ldbZahl = 12.123456789
MsgBox Len(Str(ldbZahl)) - InStr(Str(ldbZahl), ".")
End Sub
MsgBox liefert 9
Hilfts nun mit der Str-Funktion?
Ciao
Thorsten
Sub test()
Dim ldbZahl As Double, DezSep As String
DezSep = IIf("0.5" * 2 = 1, ".", ",")
ldbZahl = 12.123456789
MsgBox Len(Str(ldbZahl)) - InStrRev(CStr(ldbZahl), DezSep) - 1
End Sub
Gruß Tino
Sub test()
Dim ldbZahl As Double, DezSep As String
DezSep = IIf("0.5" * 2 = 1, ".", ",")
ldbZahl = 12.123456789
MsgBox Len(CStr(ldbZahl)) - InStrRev(CStr(ldbZahl), DezSep)
End Sub
Function gNS(ByVal Zahl As Double) As Double
Dim exP As Byte
Dim strZahl As String
' Umwandlung in String, sonst geht es nicht
strZahl = CStr(Zahl)
' Exponent vorhanden?
exP = InStr(Zahl, "E")
' normale Zahl
If exP = 0 Then
gNS = Len(strZahl) - InStr(strZahl, ",")
' Wissenschaftliche Darstellung
Else
' Nachkommestellen der Mantisse
gNS = exP - 1 - InStr(strZahl, ",")
' Korrektur mit Exponenten
gNS = Application.Max(0, gNS - Mid(strZahl, exP + 1, Len(strZahl) - exP))
End If
End Function
Das gibt jetzt die Nachkommastellen der Zahl, abschliessende Nullen werden nicht mitgezählt.
Gruss, Jogy
Function nachkomma(xx As Double) As Integer
Dim ii As Integer
Application.Volatile
For ii = 0 To 15
If Round(xx, ii) = xx Then Exit For
Next
nachkomma = ii
End Function
eine Rückmeldung wäre nett...
Gruß Ingo
Sub ErmittleAnzahlVonDezimalStellen()
Dim dblZahl As Double, DezSep As String
DezSep = IIf("0.5" * 2 = 1, ".", ",")
dblZahl = -12.123456789
Debug.Print Len(Str(Abs(dblZahl))) - InStrRev(CStr(Abs(dblZahl)), DezSep) - 1
End Sub
Herzlichen Dank an Tino, an Nepumuk und alle, die ihr Wissen mit mir geteilt haben!
Um einem eventuellen Problem mit negativen Zahlen zu begegnen, habe ich die Zahl auch noch zusätzlich in ABS geklammert.
Herzlichen Dank.
...bruno