Valor null en funcion

Hola experto. Quisiera hacerte la siguiente consulta. Tengo la siguiente función que calcula la letra del D.N.I., pero el problema es que cuando encuentra un campo donde no existe numero (quiero decir vacío), la función "casca" donde te indico. He probado usar la función Nz, pero no consigo solucionarlo. A ver si me puedes ayudar. GRACIAS
Function CalculaNIF(strA)
'--------------------------------------------------------
'Calcular la letra del NIF
'--------------------------------------------------------
Const CADENA = "TRWAGMYFPDXBNJZSQVHLCKE"
Const cNUMEROS = "0123456789"
Dim strT As String, strB As String
Dim a#, NIF#, b#, c#
Dim i As Integer
strT = Trim$(strA) ***AQUI DA EL ERROR***
If Len(strT) = 0 Then Exit Function
strB = ""
'---Dejar sólo los números...
For i = 1 To Len(strA)
If InStr(cNUMEROS, Mid$(strA, i, 1)) Then
strB = strB + Mid$(strA, i, 1)
End If
Next
strA = strB
a# = 0
NIF# = Val(strA)
Do
b# = Int(NIF# / 24)
c# = NIF# - (24 * b#)
a# = a# + c#
NIF# = b#
Loop While b# <> 0
b# = Int(a# / 23)
c# = a# - (23 * b#)
strA = Trim$(strT) + "-" + Mid$(CADENA, c# + 1, 1)
CalculaNIF = strA
End Function

1 respuesta

Respuesta
1
Prueba con esto:
Function CalculaNIF(strA)
'--------------------------------------------------------
'Calcular la letra del NIF
'--------------------------------------------------------
Const CADENA = "TRWAGMYFPDXBNJZSQVHLCKE"
Const cNUMEROS = "0123456789"
Dim strT As String, strB As String
Dim a#, NIF#, b#, c#
Dim i As Integer
Dim msg As Integer
If strA > 999999 Then
If strA < 100000000 Then
strT = Trim$(strA) '***AQUI DA EL ERROR***
Else
msg = MsgBox("El DNI ha de ser menor de 100.000.000", vbOKOnly, "Numerobix INFO")
Exit Function
End If
Else
msg = MsgBox("El DNI ha de ser mayor de 999.999", vbOKOnly, "Numerobix INFO")
Exit Function
End If
If Len(strT) = 0 Then Exit Function
strB = ""
'---Dejar sólo los números...
For i = 1 To Len(strA)
If InStr(cNUMEROS, Mid$(strA, i, 1)) Then
strB = strB + Mid$(strA, i, 1)
End If
Next
strA = strB
a# = 0
NIF# = Val(strA)
Do
b# = Int(NIF# / 24)
c# = NIF# - (24 * b#)
a# = a# + c#
NIF# = b#
Loop While b# <> 0
b# = Int(a# / 23)
c# = a# - (23 * b#)
strA = Trim$(strT) + "-" + Mid$(CADENA, c# + 1, 1)
CalculaNIF = strA
End Function
Creo que así no te dará problemas.
Un saludo, y si te sigue dando el coñazo dímelo. :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas