ControlTab impide campos vacios

Crea una base de datos nueva

  • Crea un formulario nuevo

    • Crea un control Tab o Pestaña y nombralo TabCtl

    • Crea un boton command y nombralo BotonComando

  • Dentro de la Tab o Pestaña crea tantos Controles TextBox como quieras

A continuacion crea un Modulo y pega este codigo

Option Compare Database

'************************************************************

'& &*

'& : || : &*

'& || &*

'& || &*

'& || &*

'& . - || - . &*

'& ( || ) &*

'& ) ( || ) ( &*

'& / || \ &*

'& ( || ) &*

'& ` ` &*

'& ` ____ ' &*

'& &*

'& Jefferson Jimenez (JJJT) &*

'& Cabimas - Venezuela &*

'& Septiembre - 2016 &*

'& &*

'& &*

'& &*

'& &*

'& &*

'************************************************************

'Abro una variable para almacenar la pagina o pestaña tab

Public lngpag As Long

'Con esta sub le indico que averigue cual campo esta vacio

Sub CampoVacio(frmtabCtl As TabControl, ByVal lngpag As Long)

' Establecemos las variables segun sea el tipo

Dim tabCtl As TabControl 'le exijo sea una pestaña

Dim pagActiva As Page 'para saber las paginas de la pestaña o tab

Dim ctlActivo As Control 'para saber que tipo de control

Dim intPag As Integer 'por aqui cuento las paginas en el recorrido de las pestañas

Dim boolOK As Boolean 'para saber si paso

On Error GoTo ErrorHandler 'para los errores

' le asigno el formulario (arriba en el sub le digo donde atacar)

Set tabCtl = frmtabCtl

'Recorremos las paginas de la pestaña del formulario ya establecido

For Each pagActiva In tabCtl.Pages

intPag = intPag + 1 'Ahora vamos sumando las paginas de las pestañas

If intPag = (lngpag + 1) Then 'Si la pagina coincide con la pagina del sub (que hace referencia al form de la pestaña me detengo)

For Each ctlActivo In pagActiva.Controls 'Ahora recorro los controles de la pestaña

If TypeOf ctlActivo Is TextBox Then 'Consigo los controles tipo textbox

'Podemos escojer cualquier campo CheckBox, OptionButton, ComboBox, etc

If IsNull(ctlActivo) Then 'La condicion si es nulo

boolOK = False

ctlActivo.BackColor = vbYellow 'Le pongo color para diferenciarlo

ctlActivo.SetFocus 'me voy al foco

MsgBox "Para realizar esta Accion " & vbCrLf & _

"se requiere que todos los" & vbCrLf & _

"campos esten completos", vbExclamation, "Campo Vacio" 'Notifico con un msgbox

End 'finalizo el recorrido

Else 'De lo contrario

ctlActivo.BackStyle = 1 'Dejo el campo como estaba

ctlActivo.BackColor = vbWhite 'Le pongo fondo color blanco

boolOK = True

End If

End If

Next ctlActivo 'finalizo el recorrido de los controles de la pestaña

End If

Next pagActiva 'finalizo el recorrido de la pagina

If boolOK Then MsgBox "Los campos estan rellenado", vbInformation

'Vacio las variables

Set tabCtl = Nothing

Set ctlActivo = Nothing

Set pagActiva = Nothing

Exit Sub 'Si hay error me detengo y notifico

ErrorHandler:

MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description

End Sub

'Con este Sub busco la pagina activa de la pestaña

Sub CualPagina(ctlTab As Access.TabControl)

Dim i As Integer 'Indico abra una variable integer para almacenar el recorrido

For i = 0 To ctlTab.Pages.Count 'le indico cuantas vueltas dar a la pestaña segun las pagias creadas

If i = ctlTab.Value Then 'si coinciden me detengo

lngpag = i 'le pongo valor a la variable publica lngPag

End If

Next 'fianlizo el bucle

End Sub

Y PARA USARLO EN EL FORMULARIO COPIA ESTE CODIGO

'************************************************************

'& &*

'& : || : &*

'& || &*

'& || &*

'& || &*

'& . - || - . &*

'& ( || ) &*

'& ) ( || ) ( &*

'& / || \ &*

'& ( || ) &*

'& ` ` &*

'& ` ____ ' &*

'& &*

'& Jefferson Jimenez (JJJT) &*

'& Cabimas - Venezuela &*

'& Septiembre - 2016 &*

'& &*

'& &*

'& &*

'& &*

'& &*

'************************************************************

Private Sub BotonComando_Click()

'Pilas

'Decido cual pestaña no quiero dejar vacia

If Me.TabCtl.Pages.Item(lngpag).Name = "Tab3" Then _

CampoVacio Me.TabCtl, lngpag Else _

MsgBox "La Tab o Pestaña " & Me.TabCtl.Pages.Item(lngpag).Name & " no tiene condicion", vbInformation

End Sub

Private Sub TabCtl_Change()

'Para saber cual pagina es donde estoy activo

CualPagina Me.TabCtl

End Sub