Foros del Web » Soporte técnico » Ofimática »

Pasar Codigo a una function VBA

Estas en el tema de Pasar Codigo a una function VBA en el foro de Ofimática en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/07/2009, 08:53
 
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.
  #2 (permalink)  
Antiguo 03/07/2009, 10:48
Avatar de lufe  
Fecha de Ingreso: mayo-2009
Mensajes: 294
Antigüedad: 15 años
Puntos: 15
Respuesta: Pasar Codigo a una function VBA

Puedes subir el archivo de Excel para mirarlo?
  #3 (permalink)  
Antiguo 03/07/2009, 11:31
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Pasar Codigo a una function VBA

ya los subi a varios servidores....

http://subirarchivos.chuta.org/files/15LEEDJM/rut.xls

Y por este lado, tambien los subi.

http://www.gigasize.com/get.php?d=z9kd4qnq7zb


Bueno espero que puedan ayudarme...que realmente nose me ocurre como slucionar esto....nuevamente gracias.
  #4 (permalink)  
Antiguo 03/07/2009, 14:01
Avatar de lufe  
Fecha de Ingreso: mayo-2009
Mensajes: 294
Antigüedad: 15 años
Puntos: 15
Respuesta: Pasar Codigo a una function VBA

Es esto lo que buscas?

Lo que hice fue cargar los contenidos de los Box de abajo antes

http://www.gigasize.com/get.php?d=z9kd4qnq7zb
  #5 (permalink)  
Antiguo 03/07/2009, 14:06
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Respuesta: Pasar Codigo a una function VBA

Pues en ninguna parte mandas el valor de la operacion hacia la funcion:

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
digitoVerficadorRUT = dv
End Function

Mira la ultima linea que agregue. OJO, no declaras variables y otras cositas mas que podrian mejorar tu codigo.-

Abraham
  #6 (permalink)  
Antiguo 03/07/2009, 16:11
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Pasar Codigo a una function VBA

Haber lufe nose cuales fueron los cambios que hiciste el codigo lo veo igual y hace lo mismo...de todas formas gracias.

abrahamvj ok tomo tu sugerencia pero nose como implementarlo.... me guias por favor, nose si bajaste el archivo que subi para que veas como funciona.

Desde ya muchas gracias.
  #7 (permalink)  
Antiguo 03/07/2009, 21:23
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Respuesta: Pasar Codigo a una function VBA

Amigo, solo copia/pega lo que yo envio para reemplazar el tuyo, o simplemente agregale al tuyo la ultima linea que yo he colocado (la anterior a End Sub).

OJO, se puede mejorar, pero, eso esta en tus manos

Abraham
  #8 (permalink)  
Antiguo 04/07/2009, 05:53
Avatar de lufe  
Fecha de Ingreso: mayo-2009
Mensajes: 294
Antigüedad: 15 años
Puntos: 15
Respuesta: Pasar Codigo a una function VBA

Cita:
Iniciado por juan007 Ver Mensaje
Haber lufe nose cuales fueron los cambios que hiciste el codigo lo veo igual y hace lo mismo...de todas formas gracias.

abrahamvj ok tomo tu sugerencia pero nose como implementarlo.... me guias por favor, nose si bajaste el archivo que subi para que veas como funciona.

Desde ya muchas gracias.
En la versión que yo te mandé si ingresas arriba el número y te lo valida te lo muestra abajo también con el código correspondiente.
  #9 (permalink)  
Antiguo 04/07/2009, 12:20
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Pasar Codigo a una function VBA

gracias a todos por sus respuestas y buena voluntad.

Muchas Gracias.
  #10 (permalink)  
Antiguo 22/07/2013, 11:29
 
Fecha de Ingreso: julio-2013
Mensajes: 1
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Pasar Codigo a una function VBA

Hola, me pueden ayudar como seria este codigo si lo inserto directamente en una consulta de access 2010
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:16.