Ejemplo de formulario de captura en Excel
En esta ocasión presento un formulario de captura, con validaciones, que ingresará los datos capturados en una tabla de Excel.
Cómo funciona ??
Se presenta una tabla de Excel, con 14 campos. Mediante un botón se lanza un formulario que nos permitirá capturar datos. Cada TextBox, ComboBox y CheckBox tiene una validación que no permite ingresatos los datos capturados si algún objeto está vacío.
Los mejores videos de Excel
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
En el video mostramos paso a paso cómo crear este ejemplo.
Objetos
-
Formulario de captura.
-
TextBoxes de captura.
-
Control de calendario.
-
Comboboxes que son llenados con listas predefinidas.
-
CheckBoxes.
Imagen del formulario en acción
Código del formulario
Private Sub UserForm_Activate() 'LLENADO DE COMBOS Me.cmbMarcaCte.RowSource = "lstMarca" Me.cmbMarcaKit.RowSource = "lstMarca" Me.cmbStatus.RowSource = "lstStatus" Me.cmbPromocion.RowSource = "lstTipoPromo" Me.cmbSuper.RowSource = "lstSupers" End Sub
'--------------------------------------------------------------------------------------- ' Module : frmCaptura ' Author : Sergio A Campos H, exceleinfo.wordpress.com ' Date : 25/06/2011 ' Purpose : Ejemplo de captura de datos '--------------------------------------------------------------------------------------- ' Private Sub cmdRegistrar_Click() 'INICIO DE VALIDACIONES largo = txtNumero.TextLength If largo <> 10 Or Not IsNumeric(txtNumero.Value) Then MsgBox "El número debe ser a 10 dígitos y debe ser número", vbCritical, empresa txtNumero.SetFocus Else If cmbMarcaCte.Value <> cmbMarcaKit.Value Or txtModelCte.Value <> txtModelKit.Value Then MsgBox "El modelo del cliente debe ser el mismo que nos aparezca en Proveedor", vbCritical, empresa cmbMarcaCte.SetFocus Else If cmbMarcaCte = "" Or txtModelCte = "" Or cmbMarcaKit = "" Or txtModelKit = "" Then MsgBox "Algunos de los datos de la marca y modelo están vacíos", vbCritical, empresa cmbMarcaCte.SetFocus Else If cmbStatus = "" Then MsgBox "No se ha seleccionado un status", vbCritical, empresa cmbStatus.SetFocus Else If txtCir = "" Then MsgBox "No se ha ingresado la circular", vbCritical, empresa txtCir.SetFocus Else If cmbPromocion = "" Then MsgBox "No se ha seleccionado una promoción", vbCritical, empresa cmbPromocion.SetFocus Else If cmbSuper = "" Then MsgBox "No se ha seleccionado un Supervisor", vbCritical, empresa cmbSuper.SetFocus Else If chkPromoV = FALSO Or chkPromoA = FALSO Or chkAjusteInt = FALSO Or chkComtInt = FALSO Then MsgBox "Algún(os) de los pasos no ha sido completado ", vbCritical, empresa chkPromoV.SetFocus Else 'Call Desproteger 'ALTA DE LOS REGISTROS Set TransRowRng = ThisWorkbook.Worksheets("base").Cells(1, 1).CurrentRegion NewRow = TransRowRng.Rows.Count + 1 With ThisWorkbook.Worksheets("base") .Cells(NewRow, 1).Value = txtNumero .Cells(NewRow, 2).Value = cmbMarcaCte .Cells(NewRow, 3).Value = txtModelCte .Cells(NewRow, 4).Value = dtpServicio .Cells(NewRow, 5).Value = cmbStatus .Cells(NewRow, 6).Value = txtCir .Cells(NewRow, 7).Value = cmbPromocion .Cells(NewRow, 8).Value = cmbSuper .Cells(NewRow, 9).Value = cmbMarcaKit .Cells(NewRow, 10).Value = txtModelKit .Cells(NewRow, 11).Value = chkPromoV .Cells(NewRow, 12).Value = chkPromoA .Cells(NewRow, 13).Value = chkAjusteInt .Cells(NewRow, 14).Value = chkComtInt End With GoTo fin ' End If End If End If End If End If End If End If End If 'Call Proteger Exit Sub fin: Unload Me ThisWorkbook.Worksheets("base").Activate 'Call Proteger End Sub