15/Jul/05 14:10
Para el cálculo del Dígito Verificador del Numero de Seguridad Social, sabemos que al número de multiplica × 1 el primer dígito, × 2 el siguiente dígito, × 1 el que sigue, y así susecivamente, he aqui la macro para realizar ese cálculo
[code:1:87204502df]Function NSS(Numero As String)
If Len(Numero) < 10 Then
NSS = "Faltan Dígitos " & Numero
Exit Function
End If
If Len(Numero) > 11 Then
NSS = "Muchos Dígitos " & Numero
Exit Function
End If
Dim I As Integer
Dim j As Integer
Dim k As Integer
For I = 1 To 10
k = Val(Mid(Numero, I, 1))
If (I Mod 2) <> 1 Then
k = k * 2
If k > 9 Then
k = k - 10
k = k + 1
End If
End If
j = j + k
Next I
Digito = Application.WorksheetFunction.RoundUp(j, -1) - j
If Len(Numero) = 10 Then
NSS = Mid(Numero, 1, 10) & Digito
End If
If Len(Numero) = 11 And Digito = Val(Right(Numero, 1)) Then
NSS = Numero
ElseIf Len(Numero) = 11 And Digito <> Val(Mid(Numero, 11, 1)) Then
msg = MsgBox("El Dígito verificador " & Mid(Numero, 11, 1) & " del Número de Seguridad Social '" & Mid(Numero, 1, 10) & "' no corresponde a " & Digito & "." & Chr(13) & "¿Desea cambiarlo?", vbYesNo + vbQuestion, "Dígito Verificador")
If msg = vbYes Then
NSS = Mid(Numero, 1, 10) & Digito
Else
NSS = Mid(Numero, 1, 10) & "?"
End If
End If
End Function[/code:1:87204502df]
Si desean tener una hoja con ejemplos e instrucciones para su correcto funcionamiento, estan en la zona de descargas y en mi página.
«Antes que cambien los reinos, los hombres deberán cambiar»
═╬═