VBA.Format geht nicht mit kleinen Zahlen?

27/02/2009 - 11:26 von Andreas Killer | Report spam
Ich schon wieder. :-))

Ich brauche eine Zahlendarstellung ohne Exponentcodes für z.B.
gewichtete Quersummen, daher dachte ich mir, ich mache mir eine kleine
Function:

Function Numeric2Str(ByVal Zahl) As String
'Wandelt eine Zahl in einen String ohne Exponentcodes
Dim I As Long, Exponent As Integer, Dot As String

'Wurde eine Zahl übergeben?
If Not IsNumeric(Zahl) Then
Numeric2Str = ""
Exit Function
End If
'Zahl in String umwandeln
Numeric2Str = CStr(Zahl)
'Haben wir einen Exponentcode?
I = InStr(1, Numeric2Str, "E", vbTextCompare)
If I > 0 Then
If Zahl = Fix(Zahl) Then
'Ganzzahl ohne Komma
Numeric2Str = Format(Zahl, "#")
Else
Exponent = Abs(CInt(Mid(CStr(Zahl), I + 1)))
Numeric2Str = Format(Zahl, "#0." & String(Exponent + _
Len(Numeric2Str) - 2, "#"))
End If
End If
End Function

Beim rumprobieren stelle ich aber unter XL2000 fest das die nicht
immer geht:

Sub Test()
Dim D As Double, S As String, SLen As Long
D = 1.79769313486231E+308 'geht
D = 4.94065645841247E-324 'geht nicht
D = 4.94065645841247E-237 'geht nicht
D = 4.94065645841247E-236 'geht
S = Numeric2Str(D)
SLen = Len(S)
Stop
End Sub

Ist das in spàteren Versionen auch der Fall?
Gibt's da eine Abhilfe?

Andreas.
 

Lesen sie die antworten

#1 Alexander Wolff
27/02/2009 - 11:50 | Warnen spam
Schau Dir unter http://www.xlam.ch/ die (unterschiedlichen) Informationen zu
Zahlen bei Excel und bei VBA an.
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2

Ähnliche fragen