Formularios para búsqueda, alta, baja y actualización de registros en Excel

En este ejemplo les comparto algunos formularios con las acciones más comunes y solicitadas al momento de manejo de registros en bases de datos.

  1. Búsqueda.
  2. Alta.
  3. Baja.
  4. Actualización.

Tenemos una tabla con los encabezados ID, USARIO, DEPARTAMENTO y PUESTO, donde obligatoriamente el ID debe ser un registro único para que todas las acciones funcionen bien.

El primer formulario tendrá las acciones de ALTA y BUSCAR.

Acciones de alta y búsqueda en Excel

Figura 1. Acciones de Alta y búsqueda.

Ver el video Alta, Baja, Búsqueda y actualización de registros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Alta de registros

Al presionar el botón Alta se mostrará el segundo formulario para dar de alta datos en la tabla. Este formulario tiene la capacidad de detectar si el ID está dado de alta en la tabla y no podremos dar de alta el registro a menos que indiquemos otro ID.

Detectar registro duplicado en Excel

Figura 2. No se podré registrar un ID duplicado.

Búsqueda de registros

Al registrar un ID que no esté repetido en la tabla, ahora procedemos a dar click en el botón Buscar del formulario de acciones.

La búsqueda se hace por departamento y ésta usa un operador LIKE para encontrar todos los registros similares, es decir, que contengan el texto a buscar.

Al filtrar nuestra búsqueda en el ListBox se mostrarán todos los resultados que coinciden con el texto buscado.

Filtro de búsqueda en ListBox de Excel

Figura 3. Resultado de la búsqueda en un ListBox.

Eliminar registros

Al tener el filtro con los resultados devueltos podemos elegir cualquiera de la lista y al presionar Eliminar se dará de baja el registro en la base de datos.

Actualizar registros

De la misma manera en que podemos eliminar registros, si damos click en el botón Modificar se mostrará otro formulario donde podremos modificar los campos del registro seleccionado.

Actualizar registros en Excel con formulario

Figura 4. Actualización de datos.

Código de las macros

Alta de registros

'Alta de un registro
Private Sub CommandButton1_Click()
'Declaración de variables
'
Dim strTitulo As String
Dim Continuar As String
Dim TransRowRng As Range
Dim NewRow As Integer
Dim Limpiar As String
'
strTitulo = "EXCELeINFO"
'
Continuar = MsgBox("Dar de alta los datos?", vbYesNo + vbExclamation, strTitulo)
If Continuar = vbNo Then Exit Sub
'
Cuenta = Application.WorksheetFunction.CountIf(Range("A:A"), Me.txtID)
'
If Cuenta > 0 Then
    '
    MsgBox "El ID '" & Me.txtID & "' ya se encuentra registrado", vbExclamation, strTitulo
    '
Else
    '
    Set TransRowRng = ThisWorkbook.Worksheets("Hoja1").Cells(1, 1).CurrentRegion
    NewRow = TransRowRng.Rows.Count + 1
    With ThisWorkbook.Worksheets("Hoja1")
        .Cells(NewRow, 1).Value = Me.txtID
        .Cells(NewRow, 2).Value = Me.txtUsuario
        .Cells(NewRow, 3).Value = Me.txtDepartamento
        .Cells(NewRow, 4).Value = Me.txtPuesto
    End With
    '
    MsgBox "Alta exitosa.", vbInformation, strTitulo
    '
    Unload Me
End If

Búsqueda de registros

'Abrir el formulario para modificar
Private Sub CommandButton3_Click()
If Me.ListBox1.ListIndex < 0 Then
    MsgBox "No se ha elegido ningún registro", vbExclamation, "EXCELeINFO"
Else
    frmModificar.Show
End If
End Sub
'
'Eliminar el registro
Private Sub CommandButton4_Click()
Pregunta = MsgBox("Está seguro de eliminar el registro?", vbYesNo + vbQuestion, "EXCELeINFO")
If Pregunta <> vbNo Then
    ActiveCell.EntireRow.Delete
End If
Call CommandButton5_Click
End Sub
'
'Mostrar resultado en ListBox
Private Sub CommandButton5_Click()
On Error GoTo Errores
If Me.txtFiltro1.Value = "" Then Exit Sub
Me.ListBox1.Clear
j = 1
Filas = Range("a1").CurrentRegion.Rows.Count
For i = 2 To Filas
    If LCase(Cells(i, j).Offset(0, 2).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then
        Me.ListBox1.AddItem Cells(i, j)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, j).Offset(0, 1)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, j).Offset(0, 2)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, j).Offset(0, 3)
    Else
    End If
Next i
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "EXCELeINFO"
End Sub
'
'Activar la celda del registro elegido
Private Sub ListBox1_Click()
Range("a2").Activate
Cuenta = Me.ListBox1.ListCount
Set Rango = Range("A1").CurrentRegion
For i = 0 To Cuenta - 1
    If Me.ListBox1.Selected(i) Then
        Valor = Me.ListBox1.List(i)
        Rango.Find(What:=Valor, LookAt:=xlWhole, After:=ActiveCell).Activate
    End If
Next i
End Sub
'
'Dar formato al ListBox y traer datos de la tabla
Private Sub UserForm_Initialize()
For i = 1 To 4
    Me.Controls("Label" & i) = Cells(1, i).Value
Next i

With ListBox1
    .ColumnCount = 4
    .ColumnWidths = "60 pt;60 pt;60 pt;60 pt"
End With
End Sub

Actualizar registros

'Actualizar el registro
Private Sub CommandButton1_Click()
For i = 1 To 4
    ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
Next i
Unload Me
End Sub
'
'Llenar los cuadro de texto con los datos del registro elegido
Private Sub UserForm_Initialize()
For i = 1 To 4
    Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value
Next i
End Sub

Descarga el archivo de ejemplo

:: Descargar el ejemplo Alta, Baja y actualización de registros con búsqueda en ListBox.rar

You may also like...