En VBA, puede crear un Cuadro de lista donde un usuario puede elegir una de las opciones enumeradas. El cuadro de lista se usa a menudo en formularios de usuario, pero también se puede usar en una hoja de trabajo. En este tutorial, aprenderá a crear, completar y eliminar un Listbox. También verá cómo obtener una opción de usuario en VBA y usarla en el código.
Si desea aprender a crear un ComboBox, haga clic aquí: VBA ComboBox
Si desea aprender a crear una casilla de verificación, haga clic aquí: casilla de verificación de VBA
Crear un cuadro de lista
Para insertar un cuadro de lista en la hoja de trabajo, debe ir a la Pestaña de desarrollador, haga clic en Insertar y en Controles ActiveX elija Cuadro de lista:
Imagen 1. Inserte un cuadro de lista en la hoja de trabajo
Cuando seleccione el cuadro de lista que insertó, puede hacer clic en Propiedades bajo la Pestaña de desarrollador:
Imagen 2. Cambiar las propiedades del cuadro de lista
Aquí puede establecer diferentes propiedades del Listbox. Al principio, cambiamos el atributo Nombre para lstListBox. Ahora, podemos usar el Listbox con este nombre en el código VBA.
Rellenar un cuadro de lista en código VBA
Primero, necesitamos llenar el Listbox con valores. En la mayoría de los casos, es necesario completar un cuadro de lista cuando se abre el libro de trabajo. Debido a esto, necesitamos poner un código para completar el Listbox en el objeto Libro de trabajo, procedimiento Abierto. Este procedimiento se ejecuta cada vez que un usuario abre el Libro de trabajo. Aquí está el código:
123456789 | Con Sheet1.lstListBox.AddItem "John".Añadir elemento "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Terminar con |
Como puede ver en la Imagen 3, llenamos nuestro Listbox con 5 nombres (John, Michael, Jennifer, Lilly y Robert):
Imagen 3. Complete el cuadro de lista en VBA
Rellenar un cuadro de lista a partir de un rango de celdas
Otra forma posible de rellenar un Listbox es dejar que lo haga un usuario. Un cuadro de lista se puede vincular al rango de celdas. Por lo tanto, cada vez que un usuario ingresa un nuevo valor en el rango de celdas, el cuadro de lista se actualizará con ese valor.
Si desea habilitar esto, debe ir a la Propiedades del ListBox y establezca el atributo ListFillRange:
Imagen 4. Complete el cuadro de lista a partir del rango de celdas
Vinculamos nuestro Listbox con el rango E2: E5, donde ponemos los nombres que queremos (Nathan, Harry, George, Roberta). Como resultado, el Listbox ahora se llena con estos nombres.
Obtener un elemento seleccionado de un cuadro de lista en VBA
El propósito de un Listbox es que el usuario elija. Para recuperar un valor seleccionado por un usuario, debe usar este código:
123 | Dim strSelectedItem como variantestrSelectedItem = Sheet1.lstListBox.Value |
La selección de usuarios está en el atributo Valor de Sheet1.lstListbox objeto. Este valor se asigna a la variable strSelectedItem:
Imagen 5. Obtenga un valor seleccionado del Listbox en VBA
Seleccionamos Harry en el Listbox y ejecutó el procedimiento. Como puede ver en la Imagen 5, el valor de la strSelectedItem es Harry, que es el valor que seleccionamos. Además, puede procesar esta variable en el código.
Borrar un cuadro de lista
Para borrar un Listbox en VBA, debe usar Claro método de Sheet1.lstListBox objeto. Eliminará todos los elementos del cuadro de lista. Aquí está el código:
1 | Sheet1.lstListBox.Clear |
Cuando ejecutamos el código, obtenemos el Listbox vacío:
Imagen 6. Limpiar el cuadro de lista
Usar un cuadro de lista en un formulario de usuario
Como mencionamos, Listbox se usa con mayor frecuencia en formularios de usuario. Para explicar cómo puede hacerlo, primero insertaremos un formulario de usuario. En el editor de VBA, haga clic con el botón derecho en el nombre del módulo, haga clic en Insertar y elige Formulario de usuario:
Imagen 7. Insertar un formulario de usuario
Para mostrar los controles de inserción, debe habilitar el Caja de herramientas. Para hacer esto, haga clic en elCaja de herramientas en la barra de herramientas. Después de eso, obtendrá las ventanas con todos los controles disponibles. Puede hacer clic en Cuadro de lista para crearlo en el formulario de usuario.
Imagen 8. Inserte un cuadro de lista en el formulario de usuario
Daremos nombre al ComboBox cmbComboBox. Para completarlo con valores, necesitamos poner el siguiente código en el método Inicializar del objeto Formulario de usuario:
12345678910111213 | Sub UserForm_Initialize privado ()Con UserForm1.lstListBox.AddItem "John".Añadir elemento "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Terminar conEnd Sub |
Este código se activa cada vez que un usuario ejecuta el formulario de usuario y llena el cuadro de lista con estos 5 nombres:
Imagen 9. El cuadro de lista con valores en el formulario de usuario
Si desea obtener el valor seleccionado del ComboBox, debe usar la misma lógica para el ComboBox en una hoja de trabajo, que se explica anteriormente en el artículo.