¿Hay alguna macro sintetizada que verifique si los textbox de un Form están llenos?

Estoy usando una macro que me lance un aviso cuando encuentre un textbox vacío, sin embargo, el comando me parece muy largo, debido a la cantidad y nombres de los textbox. Utilizo el siguiente:

Private Sub Image19_Click()

Sheets("ENCUESTA").Select

If T2 = Empty Or T3 = Empty Or T4 = Empty Or T5 = Empty Or TELCASA = Empty Or TELCEL = Empty Or TELTRAB = Empty Or T9 = Empty Or T10 = Empty Or T11 = Empty Or T12 = Empty Or T13 = Empty Or T14 = Empty Or T15 = Empty Or T16 = Empty Or T17 = Empty Or T18 = Empty Or T19 = Empty Or T20 = Empty Or T21 = Empty Or T22 = Empty Or T23 = Empty Or T24 = Empty Or C101 = Empty Or T25 = Empty Or T26 = Empty Or T27 = Empty Or T28 = Empty Or T29 = Empty Or T30 = Empty Or T31 = Empty Or T32 = Empty Or T33 = Empty Or T34 = Empty Or T35 = Empty Or T36 = Empty Or T37 = Empty Or T38 = Empty Or C2 = Empty Or C3 = Empty Or C4 = Empty Or C4 = Empty Or C5 = Empty Or C6 = Empty Or C7 = Empty Or C8 = Empty Or C9 = Empty Or C10 = Empty Or C11 = Empty Or C12 = Empty Or C13 = Empty Or C14 = Empty Or C15 = Empty Or C16 = Empty Or C17 = Empty Or C18 = Empty Or ETAPA = Empty Then
FALTAINFO.Show

else........

El detalle es que al aplicar esto mismo a otro form, los nombres de los textbox son mas largos. Lo que tuve que hace en este caso es 'resumir' los nombres de los text para que el comando no fuera tan largo. Sin embargo, y como tengo que estar continuamente modificando el Form, me parece que los nombres de referencia de los text son importantes. Hay alguna forma de resumir o sintetizar la secuencia de arriba?

Mucho agradeceré su respuesta.

1 respuesta

Respuesta
1

Es posible... pero quizás debas organizar un poco tus controles primero...

La colección Controls... tiene todos los objetos de tu formulario

Entonces.. con un For each micontrol in Controls... puedes pasar por todos ellos...

El detalles es que pasando por todos ellos, debes recuperar una propiedad de ellos que te permita saber si están llenos o no...

La propiedad para los Textbox puede ser Text... pero esto te va a dar error si lo pruebas con los controles como CommandButton... encontrar el elemeno común es lo complicado...

... Por eso te decía lo de organizar tus controles primero...

Esto por ejemplo te funciona para una parte de tu caso..

Private Sub Image19_Click()
Dim tb As Control

Sheets("ENCUESTA").Select

vacíos = 0
For Each tb In Controls
If Left(tb.Name, 1) = "T" Then
If tb.Text = "" Then vacíos = vacíos + 1
End If
Next tb

If vacíos>0 then
FALTAINFO.Show
else........

Como ves esto camina por todos los controles cuyo nombre empieza con la letra T... no puedo incluir los de la letra C

If Left(tb.Name, 1) = "T" or Left(tb.Name, 1) = "C" Then porque en ese caso, si intentaría revisar las cosas con los CommandButton que pudieras tener...

Si tu llamas a todos sus controles de texto de una manera similar.. (con un prefijo) puedes si preparar la logica para revisar solo ese tipos de controles...

Agradecido por tu apoyo, en verdad me fué de gran utilidad! Para los combobox utilizaré en el evento exit la opción Cancel=True.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas