300 Ejemplos

Formulario de usuario interactivo

Interactive Userform

A continuación veremos un programa en Excel VBA eso crea un formulario de usuario interactivo . El formulario de usuario que vamos a crear tiene el siguiente aspecto:

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. Cuando hace 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 Borrar borra todos los cuadros de texto. El botón Cerrar cierra el formulario de usuario.

Para crear este formulario de usuario, ejecute 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 como se muestra a continuación.

Configuración de pantalla de formulario de usuario en Excel VBA

3. Agregue las etiquetas, los cuadros de texto (primero en la parte superior, el segundo debajo del primero, etc.) y los botones de comando. Una vez que se haya completado, el resultado debe ser coherente con la imagen del formulario de usuario que se mostró anteriormente. 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 en el formulario de usuario.

cómo restar números en Excel

4. Puede cambiar los nombres y los títulos de los controles. Los nombres se utilizan en el código de Excel VBA. Los subtítulos son los que aparecen en su pantalla. Es una buena práctica cambiar los nombres de los controles, pero no es necesario aquí porque solo tenemos unos pocos controles en este ejemplo. Para cambiar el título de las etiquetas, cuadros de texto y 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 SubCommandButton1_Click ()

UserForm1.Show

Fin Sub

Ahora vamos a crear el Sub UserForm_Initialize. Cuando utilice el método Show para el formulario de usuario, este sub se ejecutará automáticamente.

6. Abra el Editor de Visual Basic .

7. En el Explorador de proyectos, haga clic derecho en UserForm1 y luego haga clic en Ver código.

8. Elija Userform de 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 SubUserForm_Initialize ()

TextBox1.SetFocus

Fin 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. Aunque ya se ve bien, no pasará 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 derecho en UserForm1 y luego 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 SubTextBox1_Change ()

Obtener datos

Fin 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 SubCommandButton1_Click ()

EditAdd

Fin Sub

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

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

Privado SubCommandButton2_Click ()

Forma clara

Fin Sub

Explicación: estos subs llaman a otros subs que vamos a crear en un segundo.

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

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

Privado SubCommandButton3_Click ()

Descargame

Fin Sub

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

Es hora de crear los submarinos. Puedes pasar por nuestro Función y Sub capítulo 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 Integer y una variable de tipo Boolean. Declare las variables en la sección Declaraciones generales (en la parte superior del módulo). De esta manera, solo tiene que declarar las variables una vez y puede usarlas en múltiples subs.

NingunoidentificaciónComo Entero, IComo Entero, jComo Entero, banderaComo Booleano

21. Agregue el sub GetData.

SubObtener datos()

SiIsNumeric (UserForm1.TextBox1.Value)Entonces
bandera =Falso
i = 0
id = UserForm1.TextBox1.Value

Hacer MientrasCeldas (i + 1, 1) .Valor ''

SiCeldas (i + 1, 1) .Value = idEntonces
bandera =Cierto
Paraj = 2A3
UserForm1.Controls ('TextBox' & j) .Value = Celdas (i + 1, j) .Value
Próximoj
Fin Si

yo = yo + 1

Lazo

Sibandera =Falso Entonces
Paraj = 2A3
UserForm1.Controls ('TextBox' & j) .Value = ''
Próximoj
Fin Si

Demás
Forma clara
Fin Si

Fin 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 el Colección de controles para recorrer fácilmente los cuadros de texto. Si Excel VBA no puede encontrar el ID (el indicador sigue siendo Falso), vacía el segundo y tercer cuadro de texto. Si el cuadro de texto de ID no contiene un valor numérico, Excel VBA llama al sub ClearForm.

22. Agregue el sub ClearForm.

SubForma clara()

Paraj = 1A3
UserForm1.Controls ('TextBox' & j) .Value = ''
Próximoj

Fin Sub

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

23. Agregue el sub EditAdd.

SubEditAdd()

NingunoemptyRowComo Largo

SiUserForm1.TextBox1.Value ''Entonces
bandera =Falso
i = 0
id = UserForm1.TextBox1.Value
emptyRow = WorksheetFunction.CountA (Range ('A: A')) + 1

Hacer MientrasCeldas (i + 1, 1) .Valor ''

SiCeldas (i + 1, 1) .Value = idEntonces
bandera =Cierto
Paraj = 2A3
Celdas (i + 1, j) .Value = UserForm1.Controls ('TextBox' & j) .Value
Próximoj
Fin Si

yo = yo + 1

Lazo

Sibandera =Falso Entonces
Paraj = 1A3
Celdas (emptyRow, j) .Value = UserForm1.Controls ('TextBox' & j) .Value
Próximoj
Fin Si

Fin Si

Fin Sub

Explicación: Si el cuadro de texto ID no está vacío, Excel VBA edita el registro en la hoja (lo opuesto a cargar un registro como hemos visto anteriormente). Si Excel VBA no puede encontrar el ID (el indicador sigue siendo Falso), agrega 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 a continuación en la fila 1 y pruebe el formulario de usuario.

cómo eliminar una celda en Excel

Formulario de usuario interactivo de Excel VBA

11/11 Completado! Obtenga más información sobre los formularios de usuario>
Ir al capítulo siguiente: Abarcar



^