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

SelectionFile type iconFile nameDescriptionSizeRevisionTimeUser
ċ

Descargar
  28 kb v. 1 24 oct. 2016 20:47 Jefferson Jimenez
Comments