Optimización de Código VBA para Gestión de Alumnos en Excel con UserForms
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,16 KB
Subrutina co_eliminar_Click
Este procedimiento maneja el evento Click del botón Eliminar.
Private Sub co_eliminar_Click()
' Elimina toda la fila actualmente seleccionada
ActiveCell.EntireRow.Delete
' Ejecuta la programación del evento Click correspondiente al botón Salir/Cancelar
co_salir_Click
End Sub
Subrutina co_mant_Click
Este procedimiento maneja el evento Click del botón de Mantenimiento (Agregar/Modificar).
Private Sub co_mant_Click()
' Si el subtítulo del botón es "Agregar" entonces...
If co_mant.Caption = "Agregar" Then
' Selecciona la hoja "Alumnos"
Sheets("Alumnos").Select
' Selecciona la celda A1
Range("A1").Select
' Mientras la celda activa no esté vacía, hará lo siguiente:
Do While ActiveCell.Value <> Empty
' Selecciona la celda de abajo
ActiveCell.Offset(1, 0).Select
Loop
' En la celda activa (la primera vacía en columna A), escribe el contenido de txtRut
ActiveCell.Value = txtRut.Text
' En la celda a la derecha de la celda activa, escribe el contenido de txtNombre
ActiveCell.Offset(0, 1).Value = txtNombre.Text
' Cambia el subtítulo del botón a "Modificar"
co_mant.Caption = "Modificar"
' Habilita el botón Eliminar
co_eliminar.Enabled = True
' Cambia el subtítulo del botón Salir a "Cancelar"
co_salir.Caption = "Cancelar"
' Si no es "Agregar" (en este caso, es "Modificar"), hace lo siguiente:
Else
' En la celda a la derecha de la celda activa, actualiza con el contenido de txtNombre
ActiveCell.Offset(0, 1).Value = txtNombre.Text
' Ejecuta la programación del evento Click correspondiente al botón Salir/Cancelar
co_salir_Click
End If
End Sub
Subrutina co_salir_Click
Este procedimiento maneja el evento Click del botón Salir/Cancelar.
Private Sub co_salir_Click()
' Si el subtítulo del botón es "Cancelar" ...
If co_salir.Caption = "Cancelar" Then
' Cambia el subtítulo del botón de mantenimiento a "Agregar"
co_mant.Caption = "Agregar"
' Deshabilita el botón Eliminar
co_eliminar.Enabled = False
' Cambia el subtítulo del botón Salir a "Salir"
co_salir.Caption = "Salir"
' Limpia el cuadro de texto txtNombre
txtNombre.Text = ""
' Limpia el cuadro de texto txtRut
txtRut.Text = ""
' Habilita el cuadro de texto txtRut
txtRut.Enabled = True
' Pone el foco (cursor) en el cuadro de texto txtRut
txtRut.SetFocus
' Si no es "Cancelar" (entonces es "Salir"), hace lo siguiente:
Else
' Cierra (descarga) el formulario actual
Unload Me
End If
End Sub
Subrutina txtRut_KeyDown
Este procedimiento maneja el evento KeyDown (pulsación de tecla) en el cuadro de texto txtRut
.
Private Sub txtRut_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
' Si la tecla presionada no es "Enter" (código 13), entonces sale de la subrutina
If KeyCode <> 13 Then Exit Sub
' Selecciona la hoja "Alumnos"
Sheets("Alumnos").Select
' Selecciona la celda A1
Range("A1").Select
' Mientras el valor de la celda activa sea distinto al contenido de txtRut, hará lo siguiente:
Do While ActiveCell.Value <> txtRut.Text
' Si el valor de la celda activa está vacío (significa que el RUT no se encontró)
If ActiveCell.Value = Empty Then
' Limpia el cuadro de texto txtNombre
txtNombre.Text = ""
' Cambia el subtítulo del botón de mantenimiento a "Agregar"
co_mant.Caption = "Agregar"
' Habilita el cuadro de texto txtRut (aunque ya debería estarlo)
txtRut.Enabled = True
' Deshabilita el botón Eliminar
co_eliminar.Enabled = False
' Sale de la subrutina
Exit Sub
End If
' Selecciona la celda de abajo
ActiveCell.Offset(1, 0).Select
Loop
' Si el bucle termina, significa que se encontró el RUT.
' Pasa el valor de la celda a la derecha (Nombre) al cuadro de texto txtNombre
txtNombre.Text = ActiveCell.Offset(0, 1).Value
' Cambia el subtítulo del botón de mantenimiento a "Modificar"
co_mant.Caption = "Modificar"
' Deshabilita el cuadro de texto txtRut (para evitar cambiar el RUT al modificar)
txtRut.Enabled = False
' Habilita el botón Eliminar
co_eliminar.Enabled = True
' Cambia el subtítulo del botón Salir a "Cancelar"
co_salir.Caption = "Cancelar"
End Sub
Subrutina UserForm_Click
Este procedimiento maneja el evento Click del propio UserForm (actualmente vacío).
Private Sub UserForm_Click()
' Este procedimiento está actualmente vacío.
' Se podría añadir código aquí si se desea una acción al hacer clic en el fondo del formulario.
End Sub