Cuadro de lista de VBA: elemento seleccionado

Este artículo demostrará cómo trabajar con el elemento seleccionado en un cuadro de lista en Excel VBA.

Los cuadros de lista se usan en gran medida en formularios VBA, pero también se pueden usar dentro de su hoja de cálculo de Excel. Muestran una lista de opciones a los usuarios, una o más de las cuales el usuario puede seleccionar.

Crear cuadro de lista en un formulario VBA

Para crear un cuadro de lista en un formulario VBA, primero necesitamos crear el UserForm.

Una vez que haya creado su formulario, seleccione el control Cuadro de lista en la caja de herramientas y luego arrastre para crear un cuadro de lista en su formulario.

Agregar valores al cuadro de lista

En el evento Initialize del formulario, escriba el siguiente código. El cuadro de lista recogerá los valores que están almacenados en un rango de celdas en su hoja de cálculo de Excel.

123456 Sub UserForm_Initialize privado ()Atenuar como rangoPara cada rng en rango ("A1: A50")Me.lstState.AddItem rng.ValueSiguiente rngEnd Sub

Cuando ejecutamos el formulario, el cuadro de lista se mostrará como se muestra en la imagen a continuación:

Seleccionar valores del cuadro de lista

De forma predeterminada, se puede seleccionar un solo valor en un cuadro de lista en un formulario de usuario. Sin embargo, esto se puede modificar cambiando la propiedad de selección múltiple del cuadro de lista.

Haga clic en el cuadro de lista para seleccionarlo y, a continuación, en la ventana Propiedades, cambie la propiedad de selección múltiple de 0-frmMultiSelectSingle para 1-frmMultiSelectMulti.

Ahora, cuando ejecutamos el formulario, podemos seleccionar más de una opción en el Cuadro de lista.

Si cambiamos la opción a ser 2-frmMultiSelectExtended, significa que podemos seleccionar uno de los valores y luego, manteniendo presionada la tecla MAYÚS, seleccione otro valor más abajo en la lista, y todos los elementos entre los 2 valores seleccionados también serán seleccionados.

Programación VBA | ¡Code Generator funciona para usted!

Trabajar con los valores seleccionados en VBA

Dependiendo del tipo de opción que hayamos usado para la propiedad de selección múltiple en el cuadro de lista, hay varias formas en que podemos usar el valor o los valores seleccionados en el cuadro de lista en el código VBA.

Asignar el valor a una variable

Podemos usar el Después de la actualización evento del cuadro de lista para asignar el valor seleccionado a una variable.

En primer lugar, creemos una variable de nivel de módulo en la parte superior del módulo de formulario.

Debajo de las palabras Opción explícita, cree la siguiente variable de cadena.

1 Dim strState como String.

Una vez que hemos creado esta variable, podemos hacer doble clic en el cuadro Lista para ir al código detrás del formulario, o podemos hacer clic en el botón de código en el Editor VBE.

El evento de clic del cuadro de lista se creará automáticamente. Selecciona el Después de la actualización Evento forma la lista de procedimientos disponibles.

En el evento After_Update, escriba el siguiente código:

123 Sub privado lstState_AfterUpdate ()strState = Me.lstStateEnd Sub

NOTA: Puede eliminar el evento Click ya que no es necesario.

Ahora, si ejecutamos el formulario y hacemos clic en el cuadro de lista, el valor seleccionado se almacenará en la variable. Para probar esto, podemos poner un punto BREAK en el código.

Ahora, cuando ejecutamos el formulario, si hacemos clic en el cuadro de lista, el código entrará en modo DEBUG y se detendrá en nuestro punto de interrupción. Si luego presionamos F8 en el teclado para avanzar un paso más en el código, la variable se completará con el elemento seleccionado en la lista.

Podemos ver este valor apoyando el mouse sobre la variable.

O

Podemos ver el valor en la ventana Inmediato.

¿Cansado de buscar ejemplos de código VBA? ¡Prueba AutoMacro!

Usar un botón de comando para devolver el valor a Excel

En primer lugar, creamos un botón de comando en el formulario para tener un botón Aceptar para devolver el valor o los valores seleccionados en el cuadro de lista a Excel.

Seleccione el control Botón de comando y luego haga clic y arrastre en su formulario para crear el botón.

En la ventana Propiedades, cambie el nombre del botón a cmdOKy cambie el título y el acelerador del botón.

El propósito del Acelerador es que el usuario use el teclado para activar el botón, en este caso Alt + O activaría el botón.

Para que el botón de comando funcione, necesitamos agregar código detrás de él para que cuando se haga clic en el botón, el código se ejecute. Esto se denomina evento Click del botón.

Para acceder al evento de clic, haga doble clic en el botón en la vista de diseño del formulario. El evento de clic se creará automáticamente, ya que es el evento que se usa con más frecuencia para los botones de comando.

Escriba el siguiente código en el evento de clic del botón de comando.

123 Sub privado cmdOK_Click ()Rango ("E1") = strStateEnd Sub

El código recogerá la variable que declaramos en el evento After_Update del ListBox y devolverá el valor al Range en Excel.

Alternativamente, podemos tomar el valor directamente del Cuadro de lista sin usar una variable.

123 Sub privado cmdOK_Click ()Rango ("E1") = me.lstStateEnd Sub

Cuando ejecutamos el formulario, el valor seleccionado se devolverá a Excel cuando hagamos clic en el botón Aceptar.

Seleccionar varios valores

Si hemos establecido la propiedad de selección múltiple del cuadro de lista en 1 o 2, lo que nos permite seleccionar varios valores en la lista, entonces el código para seleccionar estos valores es ligeramente diferente.

los Después de la actualización El evento ya no se dispara al seleccionar los valores en el cuadro de lista; por lo tanto, no podemos usar este evento.

Todavía podemos usar el evento de clic del botón de comando, pero necesitamos recorrer los valores seleccionados en el cuadro de lista para devolverlos a Excel.

En el evento Click del botón de comando, escriba el siguiente código.

12345678910 Sub privado cmdOK_Click ()Dim x como enteroRango ("E1"). SeleccionarPara x = 0 Para mí.lstState.ListCount - 1Si Me.lstState.Selected (x) = True EntoncesActiveCell = Me.lstState.List (x)ActiveCell.Offset (1, 0) .SeleccionarTerminara siSiguiente xEnd Sub

Ahora, cuando ejecutamos el formulario, solo los valores seleccionados se devolverán a la hoja de Excel.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave