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

Entradas relacionadas: