Enviar Variables a una funcion VBA Excel

Tengo la subrutina:

Private Sub UserForm_Initialize()
Limpiar_Formulario (Me)
End Sub

Y la función Que inicia Asi:

Function Limpiar_Formulario(ByVal Formulario As Controls)
Todo me funciona Bien, pero ahora necesito que ademas de recibir el formulario y usar los controles tabien reciba Un string.

Trate algo como:

Private Sub UserForm_Initialize()
Limpiar_Formulario (Me, "Usuarios")
End Sub

Function Limpiar_Formulario(ByVal Formulario As Controls, Texto As String)

Pero no me deja

Elsa Matilde Ayuda

1 respuesta

Respuesta
1

Te explico algunos detalles:

- Cuando se inicializa un Userform se supone arranca vacío por lo que no hace falta limpiarlo. Salvo que sea llamado desde otro UF y ya traiga los datos necesarios para esa llamada. En ese caso no habría que limpiarlo.

Por lo tanto olvidate de esa función en evento Initialize.

Si luego de guardar un registro necesitas limpiarlo para iniciar una nueva carga podrías tener una macro en un botón de Cancelar.

O en la misma macro de guardado, una llamada a otra subrutina con la instrucción Call limpieza y dentro del mismo UF algo como esto:

Sub limpieza()
'se limpian todos los textbox
For Each ct In Me.Controls
    If TypeName(ct) = "TextBox" Then ct.Value = ""
Next ct
'se inicializan los combobox
ComboBox1.ListIndex = -1
ComboBox2.ListIndex = -1
End Sub

Si esto no es lo que necesitas, deja más aclaraciones. La función que utilizas y cuál es el argumento 'Usuarios' y para que lo necesitas.

Te invito a mirar el video 6 de mi canal (también podrás descargar el ejemplo desde mi blog como allí se indica). Tiene un Userform con botones de guardado, cancelar y otras opciones más. Como para que lo tomes de muestra.

Sdos.

Elsa

Mira, lo que sucede es que tengo varios formularios, la función Limpiar la aplico para todos donde válido que si por ejemplo el formulario tiene la lista de tipos de documentos pues la completara, Pero ahora necesito crear una función donde me almacene los datos en una hoja especifica, pero para no crear una macro para todas las hojas quiero enviar a la función además del formulario el nobre de la hoja para que se complete

Te dejo un ejemplo:

Private Sub UserForm_Initialize()
Limpiar_Formulario "LISTAS", Me
End Sub

Y la función:

Function Limpiar_Formulario(ByVal hojita As String, Formulario As UserForm)
Formulario.TextBox1 = Sheets(hojita).[A9]
End Function

Lo que hace mi función es colocar el valor de A9 de la hoja elegida en un control llamado Textbox1. Es solo a los fines de que veas cómo es la sintaxis de las instrucciones.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas