En este ejemplo les muestro como guardar, buscar, modificar y eliminar un registro de una hoja en un formulario, esto es realmente muy sencillo. Para ello seguimos los siguientes pasos.
- Crear una hoja con datos.
- Ingresar al editor VBA excel.
- Insertar un formulario con los componentes:
- 7 Etiqueta (Label1,2,3,4,5,6 y 7)
- 6 Caja de texto (TextBox1, 2,3,4,5,6 y7)
- 1 Cuadro combinado (ComboBox1)
- 4 Botones de comando (CommandButton1,2,3,4)
- Escribir el siguiente código.
Private Sub UserForm_Initialize()
Dim intregistros As Integer
'Contamos el numero de registros en la hoja 1
intregistros = Hoja1.Range("A1").CurrentRegion.Rows.Count
Me.TextBox1.Text = intregistros
Me.TextBox3.Text = Date
Me.ComboBox1.AddItem "FEMENINO"
Me.ComboBox1.AddItem "MASCULINO"
End Sub
Private Sub CommandButton1_Click()
Dim intregistros As Integer
Dim intrespuesta As Integer
'Contamos el numero de registros en la hoja 1
intregistros = Hoja1.Range("A1").CurrentRegion.Rows.Count
intrespuesta = MsgBox("¿Los datos son correctos?", vbYesNo + vbQuestion, "Antes de guardar")
If intrespuesta = vbNo Then Exit Sub
Hoja1.Cells(intregistros + 1, 1) = Me.TextBox1.Text
Hoja1.Cells(intregistros + 1, 2) = Me.TextBox2.Text
Hoja1.Cells(intregistros + 1, 3) = Me.TextBox3.Text
Hoja1.Cells(intregistros + 1, 4) = Me.ComboBox1.Text
Hoja1.Cells(intregistros + 1, 5) = Me.TextBox4.Text
Hoja1.Cells(intregistros + 1, 6) = Me.TextBox5.Text
Hoja1.Cells(intregistros + 1, 7) = Me.TextBox6.Text
'Contamos el numero de registros en la hoja 1
intregistros = Hoja1.Range("A1").CurrentRegion.Rows.Count
Me.TextBox1.Text = intregistros
LimpiarControles
End Sub
Private Sub CommandButton2_Click()
Dim intide As Integer
Dim intval As Integer
Dim intregistros As Integer
LimpiarControles
'Contamos el numero de registros en la hoja 1
intregistros = Hoja1.Range("A1").CurrentRegion.Rows.Count
intval = 0
For intcon = 2 To intregistros
intide = Hoja1.Cells(intcon, 1)
If intide = Me.TextBox1.Text Then
Me.TextBox2.Text = Hoja1.Cells(intcon, 2)
Me.TextBox3.Text = Hoja1.Cells(intcon, 3)
Me.ComboBox1.Text = Hoja1.Cells(intcon, 4)
Me.TextBox4.Text = Hoja1.Cells(intcon, 5)
Me.TextBox5.Text = Hoja1.Cells(intcon, 6)
Me.TextBox6.Text = Hoja1.Cells(intcon, 7)
intval = 1
Exit For
End If
Next intcon
If intval = 0 Then
MsgBox "El registro no existe", vbInformation, "No encontrado"
End If
End Sub
Private Sub CommandButton3_Click()
Dim intide As Integer
Dim intval As Integer
Dim intregistros As Integer
'Contamos el numero de registros en la hoja 1
intregistros = Hoja1.Range("A1").CurrentRegion.Rows.Count
intval = 0
For intcon = 2 To intregistros
intide = Hoja1.Cells(intcon, 1)
If intide = Me.TextBox1.Text Then
Hoja1.Cells(intcon, 2) = Me.TextBox2.Text
Hoja1.Cells(intcon, 3) = Me.TextBox3.Text
Hoja1.Cells(intcon, 4) = Me.ComboBox1.Text
Hoja1.Cells(intcon, 5) = Me.TextBox4.Text
Hoja1.Cells(intcon, 6) = Me.TextBox5.Text
Hoja1.Cells(intcon, 7) = Me.TextBox6.Text
intval = 1
MsgBox "El registro fué actualizado", vbInformation, "Registro actualizado"
LimpiarControles
Exit For
End If
Next intcon
If intval = 0 Then
MsgBox "El registro no se actualizó", vbInformation, "No actualizado"
End If
End Sub
Private Sub CommandButton4_Click()
Dim intide As Integer
Dim intval As Integer
Dim intregistros As Integer
Dim intrespuesta As Integer
'Contamos el numero de registros en la hoja 1
intregistros = Hoja1.Range("A1").CurrentRegion.Rows.Count
intval = 0
For intcon = 2 To intregistros
intide = Hoja1.Cells(intcon, 1)
If intide = Me.TextBox1.Text Then
intrespuesta = MsgBox("¿Deséa eliminar el registro?", vbYesNo + vbQuestion, "Antes de eliminar")
If intrespuesta = vbYes Then
Hoja1.Rows(intcon).EntireRow.Delete
LimpiarControles
intval = 1
Exit For
End If
End If
Next intcon
If intval = 0 Then
MsgBox "El registro no se eliminó", vbInformation, "No encontrado"
End If
End Sub
Private Sub LimpiarControles()
Me.TextBox2.Text = Clear
Me.TextBox3.Text = Clear
Me.TextBox4.Text = Clear
Me.TextBox5.Text = Clear
Me.TextBox6.Text = Clear
Me.ComboBox1.Text = Clear
End Sub
Buenos días mi estimado, cuando eliminamos un registro ya no es válido el ID utilizando la variable "intregistros", podría ser utilizando el número de ID mayor mas uno, solo es una sugerencia...
ResponderBorrar