En este artículo, aprenderemos cómo crear un cuadro de lista en el que podemos seleccionar varios nombres y obtener los datos requeridos de los datos principales.

Comprendamos con un simple ejercicio: – Hemos tomado datos en los que tenemos detalles de identificación de correo electrónico para cada empleado.

Data

Siga los pasos que se indican a continuación para crear el cuadro de lista que proporciona la opción de selección de múltiples opciones usando el código VBA: –

Insertar cuadro de lista

Para insertar el Cuadro de lista en la hoja de Excel, vaya a la pestaña Desarrollador> Haga clic en Insertar> y luego haga clic en el botón Cuadro de lista en Control ActiveX

ArrowInsertingListBox

En la pestaña Desarrollador, haga clic en Modo de diseño para activar el diseño, luego haga clic en Propiedades en la pestaña Desarrollador, aparecerá el cuadro de diálogo Propiedades.

Seleccione el cuadro Lista, luego vaya al cuadro de diálogo Propiedades. Haga clic en la pestaña Categorizado. Bajo el encabezado Misc, vaya a la propiedad ListFillRange y asigne el rango que contiene los valores para el Cuadro de lista.

Bajo el encabezado Behavior, cambie la propiedad Multiselect a 1-fmMultiSelectMulti

ArrowPropertiesDialogBox

ArrowPropertiesDialogBox-2

Ahora, inserte dos botones de comando en la hoja de Excel, vaya a la pestaña Desarrollador> Haga clic en Insertar> y luego haga clic en el icono de Botón debajo de Control de formulario

ArrowCommandButton

Haga clic con el botón derecho en el botón y seleccione Editar propiedad de texto y cambie el nombre de los dos botones como «Deseleccionar nombres» y «Enviar».

Presione la tecla Alt + F11 para abrir el Editor de Visual Basic Agregar nuevo módulo e inserte el siguiente código en el módulo.

«Codificación El código anterior contiene dos procedimientos GettingSelectedItems y UnselectedItems. Asigne el procedimiento GettingSelectedItems al botón Enviar y el procedimiento UnselectedItems al botón Deseleccionar nombres.

ArrowAssigningMacro

AssigningMacro

Después de asignar el procedimiento, desactive el modo de diseño haciendo clic en el botón de modo de diseño en la pestaña Desarrollador.

Explicación lógica

En este ejemplo, nuestro objetivo es obtener la identificación de correo electrónico del nombre seleccionado por el usuario en la columna List Box to L.

El usuario puede seleccionar varios nombres en el cuadro de lista. Después de seleccionar los nombres, el usuario presionará el botón enviar y la identificación de correo electrónico correspondiente al nombre seleccionado en el cuadro de lista aparecerá en la columna L en la hoja de Excel.

Si el usuario desea deseleccionar todos los nombres seleccionados en el cuadro de lista, el usuario puede hacer clic en el botón «Deseleccionar nombres».

Para lograr el objetivo anterior, hemos utilizado la fórmula y el procedimiento de Excel.

El procedimiento GettingSelectedItems está escrito para obtener el nombre seleccionado del List Box en el rango de K10 a K23.

Para obtener la identificación de correo electrónico para el nombre seleccionado, hemos utilizado la siguiente fórmula de Excel: – = IFERROR (VLOOKUP (K10, $ A $ 10: $ B $ 23,2,0), «»)

Inserte la fórmula anterior en la celda L10 y copie y pegue esta fórmula en el rango L10 a L23.

Esta fórmula proporcionará la identificación de correo electrónico buscando el nombre seleccionado en el rango A10 a B23.

Hemos ocultado los valores en el rango K10 a K23 usando el mismo color para la fuente y el fondo de la celda.

Siga el código a continuación

Option Explicit

Sub GettingSelectedItems()

'Getting selected items in ListBox1

Application.ScreenUpdating = False

'Declaring varialbes

Dim ValueSelected As String, i, r As Integer

'deleting selected values

Range("K10:K23").Select

Selection.ClearContents

'Defining listbox1 of sheet TestDialog

With Sheets("TestDialog").ListBox1

r = 0



'Using For loop for looping through all the items in List Box

For i = 0 To .ListCount - 1

'Using .selected for selecting only those value which is selected by user in listbox

If .Selected(i) Then

'Assigning selected value of List Box to Column K on the sheet

Cells(r + 10, 11).Value = .List(i)

r = r + 1

End If

Next i

End With

Range("L10").Select

End Sub

Sub UnselectedItems()

'Unselecting all the items in the list box

Application.ScreenUpdating = False

'Declaring varialbes

Dim ValueSelected As String, i As Integer

'Defining listbox1 of sheet TestDialog

With Sheets("TestDialog").ListBox1

'Using For loop for looping through all the items in List Box

For i = 0 To .ListCount - 1

'Unselecting all the items in the list

.Selected(i) = False

Next i

End With

'Deleting data from range K10 to K23

Range("K10:K23").Select

Selection.ClearContents

Range("L10").Select

End Sub

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]