v***@gmail.com
2013-11-02 00:39:35 UTC
Hola a todos, tengo el siguiente problema, necesito hacer
una función que me calcule el código IBAN. No tendría
mayor problema si me funcionara la función MOD que me
Sacando de allí y acá puse en el código una función que daba el resto y funcionó. Este hilo es viejísimo pero si alguien lo lee (como yo) que le sirva.una función que me calcule el código IBAN. No tendría
mayor problema si me funcionara la función MOD que me
Salud!
Public Function DigitoControl(ByVal NroCta As String) As String
' Esta función devolverá el Código IBAN de la cuenta, pero OJO!!!
' sólo sirve para ESPAÑA, ya q sólo tengo informaciónde ES=(E = 14, S= 28)
Dim IBAN As Variant
Dim DigControl As String
Dim Resto As Variant
Dim cociente As Double
On Error GoTo Errores
' Le paso 20 dígitos 0012 0345 0300 0006 7890
IBAN = NroCta
' Le añade a la cola 0012 0345 0300 0006 7890 142800
IBAN = IBAN & "142800"
' Aquí me peta, el error es: Desbordamiento...
cociente = CDec(IBAN) / 97
' Resto = IBAN - (Int(cociente) * 97)
' Resto = IBAN - ((cociente) * 97)
Resto = RestoDEC(CStr(IBAN), 97)
' Si todo ha ido bien, DigControl es 7
DigControl = CStr(98 - Resto)
' Si DigControl SÓLO es de un dígito, anteponer un 0 para que sea 07
If Len(Trim(DigControl)) = 1 Then DigControl = "0" & DigControl
' IBAN = ES + 07 + 0012 0345 0300 0006 7890
IBAN = "ES" & DigControl & NroCta
' La función devolverá: ES07 0012 0345 0300 0006 7890 (por supuesto sin espacios...)
DigitoControl = IBAN
Exit Function
Errores:
MsgBox Err.Description
Err.Clear
End Function
Public Function RestoDEC(cNumero As String, nDivisor As Long) As Long
Dim vDec As Variant
vDec = CDec(cNumero)
RestoDEC = vDec - Int(vDec / nDivisor) * nDivisor
''' o todo en una linea:
RestoDEC = CDec(cNumero) - Int(CDec(cNumero) / nDivisor) * nDivisor
End Function