Private 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ón
de ES=(E = 14, S= 28)
Dim IBAN As Variant
Dim DigControl As String
Dim Resto As Variant
Dim cociente As Variant
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 - ((cociente) * 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
Errores:
MsgBox "Se ha producido un error en el módulo de
cálculo del IBAN...", vbInformation + vbOKOnly, Caption
Err.Clear
End Function
RESTO=DIVIDENDO-DIVISOR*COCIENTE
Utilizo operador \ que devuelve entero, despreciando el resto(No confundas
con /)
Cociente=Val(IBAN)\97
Resto = Val(IBAN) - 97 * Cociente
Bueno, pues da error de desbordamiento en Cociente=Val(IBAN)\97
Ya puedes declarar lo que quieras a cociente, que da el error.-
Me rindo.
Francisco García Aguado
"Javier Muñoz" <rpt27QU...@hotmail.com> escribió en el mensaje
news:29e301c1ed15$01278d70$39ef2ecf@TKMSFTNGXA08...
Ya, estoy pensando en coger el resultado y aplicarle la función InStr y
rechazar todo lo que esté a la derecha de la coma.... ya te/os contaré...
--
Un saludo,
Javier Muñoz
"Pagaag" <pagaagQ...@hotmail.com> escribió en el mensaje
news:OU0gXaS7BHA.2268@tkmsftngp04...
Será San Viernes, pero a mí me ha salido 07 :-0
A ver, he cogido la función que has enviado y he cambiado
Resto = IBAN - ((cociente) * 97)
por
Resto = IBAN - (Int(cociente) * 97)
Porque tal y como lo tenías tú, el resto era siempre 0
Será el chupito que me he tomao? Un saludo
Eva.
Javier Muñoz <rpt27QU...@Hotmail.com> escribió en el mensaje de noticias
uAO6DdS7BHA.1624@tkmsftngp04...
Lo dicho, me bajo a por el Pacharan
Francisco García Aguado
"Eva Etxebeste" <eetxe...@hotmail.com> escribió en el mensaje
news:#CZqEpS7BHA.2216@tkmsftngp03...
Copioteo de la ayuda (operador \):
La sintaxis del operador \ consta de las siguientes partes:
Parte Descripción
resultado Requerido; cualquier variable numérica.
número1 Requerido; cualquier expresión numérica.
número2 Requerido; cualquier expresión numérica.
Comentarios
Antes de efectuar la división se redondean las expresiones numéricas para
convertirlas en expresiones tipo Byte, Integer o Long. MUY IMPORTANTE ESTO
También de la ayuda:
Las variables Long (enteros largos) se almacenan como números con signo de
32 bits (4 bytes) con un valor comprendido entre - 2.147.483.648 y
2.147.483.647
Y claro, convertir 1240670412371833918997,9381443 a Long no le resulta
sencillo, ni con Ballantine's :)
Pagaag <pagaagQ...@hotmail.com> escribió en el mensaje de noticias
u9PnFyS7BHA.2128@tkmsftngp03...
Francisco García Aguado
"Eva Etxebeste" <eetxe...@hotmail.com> escribió en el mensaje
news:uLf8YAT7BHA.2412@tkmsftngp04...
Javier,
>-----Mensaje original-----
>> > MsgBox "Se ha producido unÍ{ wÀ "éu8¤^_8O5|
ì error en el módulo de
>> > cálculo del IBAN...", vbInformation + vbOKOnly,
Caption
>> > Err.Clear
>> >
>> > End Function
>> >
>> >
>> >
>>
>>
>
>
>.
>
Javier,
>-----Mensaje original-----
>> > MsgBox "Se ha producido unÍ{ wÀ ù "3h!Ü´ !
$'ö ì error en el módulo de
>> > cálculo del IBAN...", vbInformation + vbOKOnly,
Caption
>> > Err.Clear
>> >
>> > End Function
>> >
>> >
>> >
>>
>>
>
>
>.
>
Francisco García Aguado
"Javier Muñoz" <rpt27QU...@hotmail.com> escribió en el mensaje
news:2ddd01c1ed35$012f4810$3aef2ecf@TKMSFTNGXA09...
Justo al principio, para quitar los espacios en blanco de la cuenta
Javier Muñoz <rpt27QU...@hotmail.com> escribió en el mensaje de noticias
2ddd01c1ed35$012f4810$3aef2ecf@TKMSFTNGXA09...
Javier,
>-----Mensaje original-----
>>> > ' Aquí me peta, el error es: DesbordamiÍ
{ wÀ £ \&l!ì o ¬ï
> ì[ ento...