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