Formulario de usuario interactivo de Excel VBA: macros simples de Excel

Buenas, soy Miguel y hoy os traigo un nuevo post.

A continuación veremos un programa en Excel VBA que crea un formulario de usuario interactivo. El formulario de usuario que vamos a crear se ve así:

Formulario de usuario interactivo de Excel VBA

Explicación: cada vez que ingresa un valor en el cuadro de texto ID, Excel VBA carga el registro correspondiente. Al hacer clic en el botón Editar / Agregar, Excel VBA edita el registro en la hoja o agrega el registro cuando la identificación aún no existe. El botón Eliminar elimina todos los cuadros de texto. El botón Cerrar cierra el formulario de usuario.

Para crear este formulario de usuario, realice los siguientes pasos.

1. Abra el Editor de Visual Basic. Si el Explorador de proyectos no está visible, haga clic en Ver, Explorador de proyectos.

2. Haga clic en Insertar, formulario de usuario. Si la caja de herramientas no aparece automáticamente, haga clic en Ver, caja de herramientas. Su pantalla debe configurarse de la siguiente manera.

Visualización de la pantalla del formulario de usuario en Excel VBA

3. Agregue etiquetas, cuadros de texto (el primero en la parte superior, el segundo debajo del primero, etc.) y los botones de comando. Una vez completado, el resultado debe ser coherente con la imagen del formulario de usuario que se muestra arriba. Por ejemplo, cree un control de cuadro de texto haciendo clic en TextBox en el cuadro de herramientas. A continuación, puede arrastrar un cuadro de texto al formulario de usuario.

4. Puede cambiar los nombres y subtítulos de los controles. Los nombres se utilizan en el código Excel VBA. Los subtítulos son los que aparecen en pantalla. Es una buena práctica cambiar el nombre de los controles, pero no es necesario aquí porque solo tenemos algunos controles en este ejemplo. Para cambiar el título de las etiquetas, los cuadros de texto y los botones de comando, haga clic en Ver, Ventana Propiedades y haga clic en cada control.

5. Para mostrar el formulario de usuario, coloque un botón de comando en su hoja de trabajo y agregue la siguiente línea de código:

Privado Sub CommandButton1_Click ()

UserForm1.Show

Aleta Sub

Ahora creemos el Sub UserForm_Initialize. Cuando utilice el método Show para el formulario de usuario, se ejecutará automáticamente.

6. Abra el Editor de Visual Basic.

7. En el Explorador de proyectos, haga clic con el botón secundario en UserForm1 y, a continuación, haga clic en Ver código.

8. Elija Formulario de usuario en la lista desplegable de la izquierda. Elija Inicializar en la lista desplegable de la derecha.

9. Agregue la siguiente línea de código:

Privado Sub UserForm_Initialize ()

TextBox1.SetFocus

Aleta Sub

Explicación: Esta línea de código establece el foco en el primer cuadro de texto, ya que aquí es donde queremos comenzar cuando se carga el formulario de usuario.

Ahora hemos creado la primera parte del formulario de usuario. Incluso si parece que ya está ordenado, no sucederá nada cuando ingresemos un valor en el cuadro de texto ID o cuando hagamos clic en uno de los botones de comando.

10. En el Explorador de proyectos, haga clic con el botón secundario en UserForm1 y, a continuación, haga clic en Ver código.

11. Elija TextBox1 de la lista desplegable de la izquierda. Elija Cambiar en la lista desplegable de la derecha.

12. Agregue la siguiente línea de código:

Privado Sub TextBox1_Change ()

Obtener datos

Aleta Sub

13. En el Explorador de proyectos, haga doble clic en UserForm1.

14. Haga doble clic en el botón de comando Editar / Agregar.

15. Agregue la siguiente línea de código:

Privado Sub CommandButton1_Click ()

Editar Agregar

Aleta Sub

16. Haga doble clic en el botón de comando Eliminar.

17. Agregue la siguiente línea de código:

Privado Sub CommandButton2_Click ()

Forma clara

Aleta Sub

Explicación: Estos subs llaman a otros subs que crearemos en un segundo.

18. Haga doble clic en el botón de comando Cerrar.

19. Agregue la siguiente línea de código:

Privado Sub CommandButton3_Click ()

Descargarme

Aleta Sub

Explicación: Esta línea de código cierra el formulario de usuario.

Es hora de crear los submarinos. Puede consultar nuestro Subcapítulo Función y para obtener más información sobre los subs. Si tiene prisa, simplemente coloque los siguientes subs en un módulo (en el Editor de Visual Basic, haga clic en Insertar, módulo).

20. Primero, declare tres variables de tipo entero y una variable de tipo booleano. Indique las variables en la sección Declaraciones generales (en la parte superior del módulo). De esta forma solo tienes que declarar las variables una vez y puedes usarlas en varios subs.

Oscuro identificación Cómo Entero, me Cómo Entero, j Cómo Entero, Bandera Cómo Booleano

21. Agregue el subGetData.

Sub Obtener datos ()

IsNumeric (UserForm1.TextBox1.Value) Entonces

bandera = Falso

i = 0
id = UserForm1.TextBox1.Value

Hacer Mientras Celdas (i + 1, 1). Valor ""

Celdas (i + 1, 1) .Value = id Entonces

bandera = Cierto

Para j = 2 Para 3
UserForm1.Controls ("TextBox" & j) .Value = Celdas (i + 1, j) .Value
Entonces j
Aleta

yo = yo + 1

Lazo

bandera = Falso Entonces

Para j = 2 Para 3
UserForm1.Controls ("TextBox" & j) .Value = ""
Entonces j
Aleta

Otra cosa

Forma clara
Aleta

Aleta Sub

Explicación: Si el cuadro de texto ID contiene un valor numérico, Excel VBA busca el ID y carga el registro correspondiente. Usamos la colección de controles para movernos fácilmente entre cuadros de texto. Si Excel VBA no puede encontrar el ID (el indicador sigue siendo Falso), vacíe el segundo y tercer cuadro de texto. Si el cuadro de texto ID no contiene un valor numérico, Excel VBA llama al subformato ClearForm.

22. Agregue el subformulario ClearForm.

Sub Forma clara ()

Para j = 1 Para 3
UserForm1.Controls ("TextBox" & j) .Value = ""
Entonces j

Aleta Sub

Explicación: Excel VBA elimina todos los cuadros de texto.

23. Agregue el sub Editar Agregar.

Sub Editar Agregar ()

Oscuro emptyFila Cómo Largo

UserForm1.TextBox1.Value "" Entonces

bandera = Falso

i = 0
id = UserForm1.TextBox1.Value
emptyRow = WorksheetFunction.CountA (Range ("A: A")) + 1

Hacer Mientras Celdas (i + 1, 1). Valor ""

Celdas (i + 1, 1) .Value = id Entonces

bandera = Cierto

Para j = 2 Para 3
Celdas (i + 1, j) .Value = UserForm1.Controls ("TextBox" & j) .Value
Entonces j
Aleta

yo = yo + 1

Lazo

bandera = Falso Entonces

Para j = 1 Para 3
Celdas (emptyRow, j) .Value = UserForm1.Controls ("TextBox" & j) .Value
Entonces j
Aleta

Aleta

Aleta Sub

Explicación: Si el cuadro de texto ID no está vacío, Excel VBA edita el registro en la hoja (en lugar de cargar un registro como vimos anteriormente). Si Excel VBA no puede encontrar el ID (la marca sigue siendo False), agregue el registro a la siguiente fila vacía. La variable emptyRow es la primera fila vacía y aumenta cada vez que se agrega un registro.

24. Salga del Editor de Visual Basic, ingrese las etiquetas que se muestran en la fila 1 a continuación y pruebe el formulario de usuario.

Formulario de usuario interactivo de Excel VBA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página utiliza Cookies. Más info