Asumo que la cifra es un número entero, pruebe con esta función, sirve para determinar el valor de acuerdo con las unidades, por ejemplo, 10, 100, 1000 etc., sin o con aproximación:
Public Function redondea(lngCifra As Long, ndecimales As Byte, Optional boolaprox As Boolean) As Long
Dim dbaux1 As Double
Dim dbpartDec As Double
Dim dbdecimal As Double
'Parámetros
'lngCifra ----> Cifra a redondear
'ndecimales ---> número de decimales
'boolaprox ----> Opcional True, redondear aproximando, False, no aproximar
'Ejemplo:
' Redondea(125551,2, false) --- retorna 125500
' Redondea(125551,2, true) --- retorna 125600
' Redondea(125501,3, false) --- retorna 125000
' Redondea(125501,3, true) --- retorna 126000
' Redondea(125551,4, false)--- retorna 120000
' Redondea(125551,4, true) --- retorna 130000
If ndecimales > Len(lngCifra) Then
redondea = 0
Exit Function
End If
Select Case ndecimales
Case 1
dbdecimal = 10
Case 2
dbdecimal = 100
Case 3
dbdecimal = 1000
Case 4
dbdecimal = 10000
End Select
dbaux1 = Int(lngCifra / dbdecimal)
If boolaprox Then
dbpartDec = lngCifra / dbdecimal - dbaux1
If dbpartDec > 0.5 Then
redondea = (dbaux1 + 1) * dbdecimal
Else
redondea = dbaux1 * dbdecimal
End If
Else
redondea = dbaux1 * dbdecimal
End If
End Function
Por ejemplo:
Redondea(125400,3, False) retorna 125000
Redondea(125501,3, True) retorna 126000