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
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 de numerobix PlanetaInformatico.es
1