Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/07/2009, 08:53
juan007
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Pasar Codigo a una function VBA

Compañeros(as) desde ya se agradece cualquier ayuda o sugerencia.

Bueno les comento que tengo este codigo que es el rut chileno en otros paises me parece llamado dni, el tema es validar y me genere el digito verificador en el texbox siguiente que me lo arroje ahi:
Código:
Private Sub txtRut_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
    largo = Len(txtRut)
    Suma = 0
    For i = 1 To 8
        If largo = 8 Then
            rut = Right(txtRut, 8)
            Suma = Suma + Val(Mid(rut, i, 1)) * Val(Mid("32765432", i, 1))
       Else
            rut = Right(txtRutMantenEgresoFondos, 7)
            Suma = Suma + Val(Mid(rut, i, 1)) * Val(Mid("2765432", i, 1))
        End If
    Next i
    Dv = 11 - (Suma Mod 11)
    If Dv = 10 Then Dv = "K"
    If Dv = 11 Then Dv = 0
    txtDv = Dv
End Sub
Con este codigo me funciona super bien la aplicacion pero tengo que hacer muchas veces este mismo codigo pero con distintos nombres para los textbox, entonces pensaba crear un modulo y dentro de ese modulo, crear una funcion con un parametro y pasarle el valor de el textbox de ese momento.

La funcion la tengo creada de esta forma:
Código:
Function digitoVerficadorRUT(rut As Double) As String
Dim i As Integer
    largo = Len(rut)
    Suma = 0
    For i = 1 To 8
        If largo = 8 Then
            rut = Right(rut, 8)
            Suma = Suma + Val(Mid(rut, i, 1)) * Val(Mid("32765432", i, 1))
       Else
            rut = Right(rut, 7)
            Suma = Suma + Val(Mid(rut, i, 1)) * Val(Mid("2765432", i, 1))
        End If
    Next i
    dv = 11 - (Suma Mod 11)
    If dv = 10 Then dv = "K"
    If dv = 11 Then dv = 0
    'txtDv = Dv
End Function
Pero al ejecutar la aplicacion cuando apreto el enter no me muestra en digito verificador en el siguiente textbox donde quiero que aparesca el digito verificador, nose que hago mal.
Asi llamo a la funcion y con este evento.
Código:
Private Sub txtRutMantFichaTrabajadores_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    txtDv.Text = digitoVerficadorRUT(txtRutMantFichaTrabajadores)
End Sub
Ojala puedan guiarme....desda ya muchas gracias.