Sub afronden_data()
'Set xRg = ActiveSheet.UsedRange
Set xRg = Application.InputBox("Select a range:", "tools for Excel", xTxt, , , , , 8)
If Not xRg Is Nothing Then
Application.ScreenUpdating = False
For Each cl In xRg
' cl.NumberFormat = "general" 'kapt nullen weg aan het eind
' cl.NumberFormat = "@"
l = Len(cl)
lk = Right(cl, l - (l - 1))
vl = Right(cl, l - (l - 2))
vlk = Left(vl, Len(vl) - (Len(vl) - 1))
Select Case cl
Case -100000 To -10000
cl = cl / 1000
Y = Int(Log(Round(Abs(cl), 14)) / Log(10#) + 1)
cl = Round(Round(cl, 14), Abs(Y)) * 1000
Case -10000 To -1000
cl.NumberFormat = "0"
Case -1000 To -100
cl.NumberFormat = "0"
Case -100 To -10
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0"
ElseIf l = 4 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 0)
Else:
cl.NumberFormat = "0"
End If
End If
Else:
cl.NumberFormat = "0"
End If
Case -9.99999 To -1
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0.0"
ElseIf l = 5 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 1)
Else:
cl.NumberFormat = "0.0"
End If
End If
Else:
cl.NumberFormat = "0.0"
End If
Case -0.9999999 To -0.1
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0.00"
ElseIf l = 6 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 2)
Else:
cl.NumberFormat = "0.00"
End If
End If
Else:
cl.NumberFormat = "0.00"
End If
Case -0.0999999 To -0.01
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0.000"
ElseIf l = 7 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 3)
Else:
cl.NumberFormat = "0.000"
End If
End If
Else:
cl.NumberFormat = "0.000"
End If
Case -0.00999999 To -0.001
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0.0000"
ElseIf l = 7 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 4)
Else:
cl.NumberFormat = "0.0000"
End If
End If
Else:
cl.NumberFormat = "0.0000"
End If
Case -0.00099999 To -0.0001
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0.00000"
ElseIf l = 8 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 5)
Else:
cl.NumberFormat = "0.00000"
End If
End If
Else:
cl.NumberFormat = "0.00000"
End If
Case -0.000099999 To 0.00001
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0"
ElseIf l = 4 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 0)
Else:
cl.NumberFormat = "0"
End If
End If
Else:
cl.NumberFormat = "0"
End If
'Positieve cllen
Case 0.00001 To 0.000099999
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0"
ElseIf l = 4 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 0)
Else:
cl.NumberFormat = "0"
End If
End If
Else:
cl.NumberFormat = "0"
End If
Case 0.0001 To 0.00099999
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0.00000"
ElseIf l = 7 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 5)
Else:
cl.NumberFormat = "0.00000"
End If
End If
Else:
cl.NumberFormat = "0.00000"
End If
Case 0.001 To 0.00999999
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0.0000"
ElseIf l = 6 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 4)
Else:
cl.NumberFormat = "0.0000"
End If
End If
Else:
cl.NumberFormat = "0.0000"
End If
Case 0.01 To 0.0999999
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0.0000"
ElseIf l = 7 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 4)
Else:
cl.NumberFormat = "0.0000"
End If
End If
Else:
cl.NumberFormat = "0.0000"
End If
Case 0.1 To 0.9999999
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0.000"
ElseIf l = 6 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 3)
Else:
cl.NumberFormat = "0.000"
End If
End If
Else:
cl.NumberFormat = "0.000"
End If
Case 1 To 9.99999
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0.00"
ElseIf l = 5 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 2)
Else:
cl.NumberFormat = "0.00"
End If
End If
Else:
cl.NumberFormat = "0.00"
End If
Case 10 To 100
If cl - Int(cl) = 0 Then
cl.NumberFormat = "0.0"
ElseIf l = 3 Then
If lk = 5 Then
If vlk Mod 2 = 0 Then
cl.NumberFormat = "@"
cl = Round(cl, 1)
Else:
cl.NumberFormat = "0.0"
End If
End If
Else:
cl.NumberFormat = "0.0"
End If
Case 100 To 1000
cl.NumberFormat = "0"
Case 1000 To 10000
cl.NumberFormat = "0"
Case 10000 To 1000000000
cl.NumberFormat = "0"
End Select
Next
Application.ScreenUpdating = True
End If
End Sub