Hola amigo
Mira yo tengo un codigo en donde puedo validar un digito verificador del rut y me funciona perfectamente, espero te sirva.
'*** Esta clase permite recibir como parametro un rut y lo valida para comprobar si su digito *****
' verificador esta correcto o no, su respuesta es boolena
'*** Se declaran las variables globales ***************************************************************************
Public VAR_NUMBER As Integer
Public VAR_X As String
Public VAR_AA As String
Public VAR_N As Integer
Public VAR_MASCULINO As Boolean
Public VAR_POSIC As Integer
Public VAR_ANTE As String
Public VAR_POST As String
Public VAR_NUMBERTOSTRING As String
Public VAR_NUMBERTOSTRING1 As String
Public VAR_NUMBERTOSTRING2 As Double
Public VAR_NUMBERTOSTRING3 As String
Public VAR_NUMBERTOSTRING4 As String
Public VAR_LETRAS As String
'*** Esta funcion permite inicializar las variables de trabajo ****************************************************
Private Sub Class_Initialize()
VAR_NUMBER = 0
VAR_X = ""
VAR_AA = ""
VAR_N = 0
VAR_MASCULINO = False
VAR_POSIC = 0
VAR_ANTE = ""
VAR_POST = ""
VAR_NUMBERTOSTRING = ""
VAR_NUMBERTOSTRING1 = ""
VAR_NUMBERTOSTRING2 = 0
VAR_NUMBERTOSTRING3 = ""
VAR_NUMBERTOSTRING4 = ""
VAR_LETRAS = ""
VALIDARUT = False
End Sub
'*** Esta funcion permite limpira las variables de trabajo ********************************************************
Private Sub Class_Terminate()
VAR_NUMBER = 0
VAR_X = ""
VAR_AA = ""
VAR_N = 0
VAR_MASCULINO = False
VAR_POSIC = 0
VAR_ANTE = ""
VAR_POST = ""
VAR_NUMBERTOSTRING
VAR_NUMBERTOSTRING1
VAR_NUMBERTOSTRING2 = 0
VAR_NUMBERTOSTRING3 = ""
VAR_NUMBERTOSTRING4 = ""
VAR_LETRAS = ""
End Sub
'** Funcion que valida el digito verificador del rut ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
Public Function VALIDARUT(VAR_SRUT As String) As Boolean
'** Se extrae el digito verificador y el bloque numerico para su validacion y se inicializan las variables ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
VAR_SNUMERO1 = ""
VAR_SNUMERO2 = ""
VAR_SNUMERO3 = ""
VAR_SCADENA = ""
VAR_SNUME = ""
VAR_SNUMERICO = ""
VAR_DLARGO = 0
VAR_DSUMA = 0
VAR_DSUMAVALOR = 0
VAR_ITOTALSUMA = 0
VAR_IRESTO = 0
VAR_IVALIDADIGITO = 0
VAR_ILARGORUT = Len(Trim$(VAR_SRUT))
VAR_SDIGITO = StrConv(Right$(VAR_SRUT, 1), 1)
VAR_SEXTCAR = ""
VAR_ICONTADOR = 0
VAR_SCADENA = "765432765432"
VAR_ILARGOCADENA = Len(VAR_SCADENA)
VAR_DSUMAVALOR = 0
VAR_ITOTALSUMA = 0
VAR_IRESTO = 0
VAR_IVALIDADIGITO = ""
VAR_SSIGNO = ""
'** Se busca el signo ingresado para comprobarlo ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
VAR_IPOSIGNO = InStr(VAR_SRUT, "-")
If VAR_IPOSIGNO > 0 Then
VAR_SSIGNO = Mid(VAR_SRUT, VAR_IPOSIGNO, 1)
End If
'** Se verifica si el rut ingresado posee signo **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
If VAR_IPOSIGNO <> 0 Then
VAR_SEXTRAESIGNO = Trim$(Mid$(VAR_SRUT, VAR_ILARGORUT - 1, 1))
VAR_SNUMERICO = Mid$(Trim$(VAR_SRUT), 1, VAR_ILARGORUT - 2)
Else
VAR_SNUMERICO = Mid$(Trim$(VAR_SRUT), 1, VAR_ILARGORUT - 1)
End If
VAR_DLARGO = Len(VAR_SNUMERICO)
For VAR_I = 1 To VAR_DLARGO
VAR_SEXTCAR = Mid$(VAR_SNUMERICO, VAR_I, 1)
Select Case VAR_SEXTCAR
Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
VAR_SNUME = VAR_SNUME & VAR_SEXTCAR
End Select
Next VAR_I
'** Se la parte numerica que va a ser procesada para su validacion y extraer su digito verificador para compararla con la ingresada **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
VAR_SNUMERICO = Format(VAR_SNUME, "000000000")
If IsNumeric(VAR_SNUMERICO) Then
'** Se inicializan las variables de trabajo del ciclo de validacion ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
VAR_ILARGORUT = Len(VAR_SNUMERICO)
'VAR_DLARGO = Len(VAR_SNUMERICO)
'** Se comienza el ciclo de suma de los valores de la cadena que conforma el proceso de validacion ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
For VAR_I = 1 To VAR_ILARGORUT
'Do While VAR_ILARGORUT
DSUMAVALOR = Val(Mid$(VAR_SNUMERICO, VAR_ILARGORUT, 1)) * Val(Mid$(SCADENA, VAR_ILARGOCADENA, 1))
ITOTALSUMA = ITOTALSUMA + DSUMAVALOR
VAR_ILARGORUT = VAR_ILARGORUT - 1
VAR_ILARGOCADENA = VAR_ILARGOCADENA - 1
'Loop
Next VAR_I
'** Se identifica el digito verificador para verificarlo ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
VAR_IRESTO = 11 - (ITOTALSUMA Mod 11)
Select Case VAR_IRESTO
Case 1, 2, 3, 4, 5, 6, 7, 8, 9
VAR_IVALIDADIGITO = Trim$(Str$(VAR_IRESTO))
If VAR_IVALIDADIGITO <> VAR_SDIGITO Then
MsgBox "Rut erróneo o digito verificador debe ser " & VAR_IVALIDADIGITO, 64, "Validación de Rut"
VALIDARUT = False
Exit Function
End If
Case 10
VAR_IVALIDADIGITO = "K"
If VAR_IVALIDADIGITO <> VAR_SDIGITO Then
MsgBox "Rut erróneo o digito verificador debe ser " & VAR_IVALIDADIGITO, 64, "Validación de Rut"
VALIDARUT = False
Exit Function
End If
Case Else
VAR_IVALIDADIGITO = "0"
If VAR_IVALIDADIGITO <> VAR_SDIGITO Then
MsgBox "Rut erróneo o digito verificador debe ser " & VAR_IVALIDADIGITO, 64, "Validación de Rut"
VALIDARUT = False
Exit Function
End If
End Select
Else
VAR_SRUT = ""
MsgBox "ERROR en el ingreso...El Rut no debe poseer caracteres alfabéticos...", vbCritical, "Validación de Rut"
VALIDARUT = False
Exit Function
End If
End Function
En la linea de codigo que dice:
Public Function VALIDARUT(VAR_SRUT As String) As Boolean
tu parametro de entrada es: VAR_SRUT en donde le mandas el string y te devuelve como resultado verdadero o falso comprobando si lo que ingresaste es correcto o no..cualquier duda me mandas tus consultas al correo.
Saludos.
15 ene 2011 a las 14:51
26 sep 2011 a las 14:12