Limpiar datos de un formulario

Lo que intento es limpiar los datos de un formulario, para lo cual tengo la siguiente instrucción:

Dim Ctl As Object

For Each Ctl In Me.Controls

If TypeOf Ctl Is CheckBox Then

Ctl.Value = False

ElseIf TypeOf Ctl Is TextBox Then

Ctl.Text = ""

End If

Next

Ahora esta instrucción la he insertado en un modulo llamado Public Function Borrar() y a la hora de llamarla( Call Borrar)  me da error en la línea For Each Ctl In Me. Controls, y me salta error de compilación: El uso de la palabra clave Me no es válido. Me podíais ayudar con la instrucción.

1 respuesta

Respuesta
2

Antonio:Te da Error porque el Me. Se está refiriendo al Formulario donde escribes.

Para Convertir ese código en Publico, yo te sugeriría un Procedimiento algo parecido a ésto

Public Sub VaciaControles(Frm As Access.Form)

Dim Ctrl As Access.Control

For Each Ctrl In Frm.Controls

If Ctrl.ControlType = AcCheckBox Then

Ctrl.Value = False

ElseIf Ctrl.ControlType = AcTextBox Then

Ctrl.Value = ""

End If

Next

End Sub

Y para llamar al procedimiento desde un Formulario>>

Call VaciaControles(Me) el Me sin el punto.

Es una manera . Mis saludos >> Jacinto

Hola y Saludos, agradecerte la ayuda facilitada, he realizado la función que me facilitaste y a la hora de ejecutarla me salta error 2448, no se puede asignar un valor a este objeto, y me marca

If Ctrl.ControlType = acCheckBox Then

Ctrl.Value = False

Comentar por si sirve de ayuda, que tengo un grupo de opciones donde van insertados los checkbox.

Antonio: Un grupo de Opciones es en sí un "Control", y de él eliges una de las "Opciones" posibles y que también al mostrarse de nuevo prmite que "no" se ponga una Opción predeterminada.

No se ver la utilidad de "limpieza" que citas. Mi contestación iba encaminada a poner en Falso (0) CheckBox individuales en un Formulario.

Si lo que quieres es que al pasar de Registro (por ejemplo) ese Grupo no te marque ninguno de los Check, basta con que pongas en blanco el valor predeterminado según te muestro enla imagen.

Un saludo >> Jacinto

Hola Jacinto, veras tengo un formulario independiente, en el cual cuando ya he insertado un registro, me sale un mensaje diciendo si quiero seguir dando de alta más registro, lo que quiero que me deje todos los registros en blanco para seguir dando de altas más registros. Por eso la instrucción para dejar limpios los campos que tengo en el formulario, y poder seguir dando más altas.

Un Saludo

Bien Antonio: Imagino que aunque tengas esos Check en el Grupo de Opciones son el Equivalente a Botones de Opción en cuyo caso yo probaría lo siguiente.

Public Sub LimpiaControlesForm(Frm As Access.Form)
Dim Ctrl As Access.Control
Dim NombControl As String
For Each Ctrl In Frm.Controls
        If Ctrl.ControlType <> acLabel And Ctrl.ControlType <> acCommandButton And Ctrl.ControlType <> acOptionButton Then
                NombControl = Ctrl.Name  'Por si se quiere seguir el Código paso a paso
                Ctrl.Value = Null
        End If
Next Ctrl
End Sub

Así lo quepones a Null es el Grupo de Opciones entero sin bajar al nivel de las Opciones.

Y para llamarlo desde el Form >> Call LimpiaControlesForm(Me)

Prueba y me comentas. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas