Last active
October 30, 2015 08:29
-
-
Save jvmonjo/eb23a8b27cd5b4d78e01 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Public Function Validar_NIF(ByVal nif As String) As Boolean | |
Dim aux As String | |
nif = UCase(nif) 'ponemos la letra en mayuscula | |
aux = Mid(nif, 1, Len(nif) - 1) 'quitamos la letra del nif | |
If Len(aux) >= 7 And IsNumeric(aux) Then | |
aux = Calcular_NIF(aux, False) 'calculamos la letra del NIF para comparar con la que tenemos | |
Else | |
MsgBox ("El dato introducido no corresponde a un NIF") | |
Validar_NIF = False | |
Exit Function | |
End If | |
If nif <> aux Then | |
Validar_NIF = False | |
Else | |
Validar_NIF = True | |
End If | |
End Function | |
Public Function Calcular_NIF(ByVal dni As String, ByVal retornoLetra As Boolean) As String | |
Dim resto As Integer | |
Dim letra_NIF As String | |
letra_NIF = "" | |
If dni = "" Then | |
MsgBox ("No se ha introducido datos") | |
Calcular_NIF = "" | |
Exit Function | |
ElseIf Len(dni) < 7 Then | |
MsgBox ("No se puede calcular el NIF porque faltan dígitos") | |
Calcular_NIF = "" | |
Exit Function | |
ElseIf Not IsNumeric(dni) Then | |
MsgBox ("El dato introducido no es numérico") | |
Calcular_NIF = "" | |
Exit Function | |
Else | |
resto = Val(dni) Mod 23 | |
Select Case resto | |
Case 0 | |
letra_NIF = "T" | |
Case 1 | |
letra_NIF = "R" | |
Case 2 | |
letra_NIF = "W" | |
Case 3 | |
letra_NIF = "A" | |
Case 4 | |
letra_NIF = "G" | |
Case 5 | |
letra_NIF = "M" | |
Case 6 | |
letra_NIF = "Y" | |
Case 7 | |
letra_NIF = "F" | |
Case 8 | |
letra_NIF = "P" | |
Case 9 | |
letra_NIF = "D" | |
Case 10 | |
letra_NIF = "X" | |
Case 11 | |
letra_NIF = "B" | |
Case 12 | |
letra_NIF = "N" | |
Case 13 | |
letra_NIF = "J" | |
Case 14 | |
letra_NIF = "Z" | |
Case 15 | |
letra_NIF = "S" | |
Case 16 | |
letra_NIF = "Q" | |
Case 17 | |
letra_NIF = "V" | |
Case 18 | |
letra_NIF = "H" | |
Case 19 | |
letra_NIF = "L" | |
Case 20 | |
letra_NIF = "C" | |
Case 21 | |
letra_NIF = "K" | |
Case 22 | |
letra_NIF = "E" | |
End Select | |
If retornoLetra = True Then | |
Calcular_NIF = letra_NIF | |
Else | |
Calcular_NIF = dni & letra_NIF | |
End If | |
Exit Function | |
End If | |
End Function |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment