VBA-Funktion für die Anzeige von Zahlen mit der gewünschten Anzahl an signifikanten Stellen.
'' ' Runde auf Anzahl signifikanter Stellen ' --------------------------------------------------- ' wallner-novak@bemessung.at ' ' value zu rundende Zahl ' stellen Anzahl der signifikanten Stellen ' ' Rückgabewert: gerundete Zahl ' Public Function signifikant(ByVal value As Variant, ByVal stellen As Integer) As Double Dim s As Long ' Zwischenwert If Not IsNumeric(value) Then value = 0 End If If value = 0 Then signifikant = 0 Exit Function Else s = stellen - 1 - Int(Log(Abs(value)) / Log(10)) End If If s < 0 Then signifikant = Round(value * 10 ^ s, 0) / 10 ^ s Else signifikant = Round(value, s) End If End Function
Die Anzahl der signifikanten Stellen einer gegebenen Zahl lässt sich mit folgender Funktion bestimmen:
'' ' Anzahl der signifikanten Stellen (hinter dem Komma) ' --------------------------------------------------- ' wallner-novak@bemessung.at ' ' value Zahl ' ' Rückgabewert: Anzahl der signifikanten Stellen ' Public Function nSignifikant(ByVal value As Double) As Long Dim s As String ' String Dim fd As Boolean ' found non-cero digit Dim i As Long ' counter Dim comma As String ' comma separator character (for international use) Dim pos1 As Long ' position fd = False comma = Mid(CStr(1.1), 2, 1) s = CStr(value) nSignifikant = 0 pos1 = InStr(1, s, comma) If pos1 > 0 Then ' find leading ceroes For i = pos1 To Len(s) If Mid(s, i, 1) <> "0" And Mid(s, i, 1) <> comma Then nSignifikant = nSignifikant + 1 fd = True Else If fd Then Exit For End If Next Else ' Ganzzahl nSignifikant = Len(s) End If End Function