¿Cómo crear un cuadro combinado dependiente en VBA Excel?

Tabla de contenido:

Anonim

Sabemos cómo crear un menú desplegable en cascada en una hoja de trabajo mediante la validación de datos. Pero, ¿cómo creamos un menú desplegable de cuadro combinado en cascada en el formulario de usuario de VBA? Ésta es una de las necesidades básicas.

En este artículo, aprenderemos cómo crear un cuadro combinado dependiente en VBA.

Lógica para cuadro combinado dependiente en VBA

Para crear un cuadro combinado dependiente en VBA, necesitamos inicializar el cuadro combinado en el evento del elemento fuente. Por ejemplo, si un cuadro combinado depende de un grupo de botones de opción, el código para cargar el cuadro combinado dependiente debe ejecutarse inmediatamente después de que alguien seleccione un botón de opción. O si un cuadro combinado depende de otro cuadro combinado, entonces, dependiendo del cuadro combinado, debería cargarse cada vez que se cambia el valor en el cuadro combinado.

Basta de teoría. Pasemos a un ejemplo para ver cómo funciona.

ComboBox dependiendo de otro Combobox

Crea dos cuadros combinados. Primero se deben enumerar algunos nombres de países. El otro debe enumerar los nombres de los estados del país seleccionado. Si el usuario cambia el país en el primer cuadro combinado, se debe cambiar la lista del segundo cuadro combinado.

Creemos un formulario que tenga dos cuadros combinados con etiquetas de países y estados y un botón de comando para enviar la entrada.

El primer cuadro combinado debe incluir los nombres de los países y no depende de ningún valor. Así que lo cargaremos en el evento form_intialize como lo hacemos para la inicialización básica del cuadro combinado.

Haga doble clic en el formulario de usuario. Abrirá el área de codificación en UserForm Object. Ahora, en el menú desplegable de la izquierda, seleccione formulario de usuario. Luego, en el menú desplegable de la derecha, seleccione inicializar.

Se insertará un subnombre vacío UserForm_Initialize (). Todo lo escrito en este sub se ejecutará antes de que aparezca el formulario de usuario.

Entonces escribimos el código de inicialización para el cuadro combinado aquí.

Private Sub UserForm_Initialize () countries = Array ("India", "Nepal", "Bután", "Shree Lanka") UserForm1.ComboBox1.List = estados End Sub 

Tenemos nuestro primer cuadro combinado inicializado. Siempre que cargues el formulario de usuario, el primer combox estará listo con el nombre de los países.

Ahora, para cargar el segundo cuadro combinado, debemos mirar qué valor se selecciona en el primer cuadro combinado1 y ejecutar el código cada vez que el cuadro combinado1 cambia sus valores. Para esto usaremos el evento Combobox_AfterUpdate.

En el menú desplegable de la izquierda, seleccione combobox1. En el menú desplegable de la derecha, seleccione AfterUpdate. También podemos usar el evento Change, pero nos ceñiremos a AfterUpdate en el artículo.

Ahora escribe el siguiente código:

Private Sub ComboBox1_AfterUpdate () Seleccione Case ComboBox1.Value Case "India": states = Array ("Delhi", "UP", "UK", "Gujrat", "Kashmir") Case "Nepal": states = Array ("Arun Kshetra "," Janakpur Kshetra "," Katmandu Kshetra ", _" Gandak Kshetra "," Kapilavastu Kshetra ") Caso" Bután ": estados = Array (" Bumthang "," Trongsa "," Punakha "," Thimphu "," Paro ") Caso" Shree Lanka ": estados = Array (" Galle "," Ratnapura "," Colombo "," Badulla "," Jaffna ") Fin Seleccione ComboBox2.List = estados Fin Sub 

Aquí hemos utilizado una declaración de caso selecto. La declaración de caso de selección es buena cuando queremos ver qué valor se elige entre muchos valores. Lo he explicado aquí en detalle.

Para almacenar el valor insertado por el usuario use el botón enviar. Escriba el siguiente código en el botón de comando enviar para guardar el país y el estado seleccionados por el usuario en la hoja de trabajo.

Private Sub CommandButton1_Click () country = ComboBox1.Value State = ComboBox2.Value ThisWorkbook.Worksheets ("sheet1"). Range ("G1") = country ThisWorkbook.Worksheets ("sheet1"). Range ("H1") = State Unload Me End Sub 

Ahora, para mostrar el formulario de usuario, inserte un botón en la hoja de trabajo y escriba el siguiente código. O puede usar un módulo simple para mostrar el formulario de usuario.

Sub load_userform () UserForm1.Show End Sub 

Ahora ejecute el código load_userform.

¿Como funciona?

Cuando ejecuta el sub que tiene el código userform.show, el VBA ejecuta los eventos userform_initialize inmediatamente después de ejecutar el comando userform.show. En el evento userform_intialize hemos inicializado el primer cuadro combinado que tiene una lista de países. Posteriormente se muestra el formulario al usuario.

Ahora, cuando el usuario selecciona cualquier valor del primer cuadro combinado, se ejecuta el evento combobox1_AfterUpdate. Este evento contiene el código para verificar qué valor selecciona el usuario en combobox1 y, en base a ese valor, establece la matriz de estados e inicializa los valores de combobox2 con la matriz de estados.

Así que sí, chicos, así es como se crea un cuadro combinado en cascada en el formulario de usuario de VBA. Espero haber sido lo suficientemente explicativo y que el artículo cumplió su propósito. Si tiene alguna duda con respecto a este artículo o cualquier tema de VBA, pregúnteme en la sección de comentarios a continuación.

Introducción a Excel VBA UserForms| Explicaré cómo crear un formulario en Excel, cómo usar la caja de herramientas de VBA, cómo manejar las entradas del usuario y finalmente cómo almacenar las entradas del usuario. Repasaremos estos temas usando un ejemplo y una guía paso a paso.

Variables de VBA en Excel| VBA son las siglas de Visual Basic para Aplicaciones. Es un lenguaje de programación de Microsoft. Se utiliza con aplicaciones de Microsoft Office como MSExcel, MS-Word y MS-Access, mientras que las variables de VBA son palabras clave específicas.

Alcance variable de Excel VBA| En todos los lenguajes de programación, tenemos especificadores de acceso a variables que definen desde dónde se puede acceder a una variable definida. Excel VBA no es una excepción. VBA también tiene especificadores de alcance.

Argumentos ByRef y ByVal | Cuando se pasa un argumento como argumento ByRef a una función o sub diferente, se envía la referencia de la variable real. Cualquier cambio realizado en la copia de la variable se reflejará en el argumento original.

Elimine hojas sin mensajes de confirmación usando VBA en Microsoft Excel | Dado que está eliminando hojas usando VBA, sabe lo que está haciendo. Le gustaría decirle a Excel que no muestre esta advertencia y elimine la maldita hoja.

Agregar y guardar un nuevo libro de trabajo usando VBA en Microsoft Excel 2016| En este código, primero creamos una referencia a un objeto de libro de trabajo. Y luego lo inicializamos con un nuevo objeto de libro de trabajo. El beneficio de este enfoque es que puede realizar operaciones en este nuevo libro de trabajo fácilmente. Como guardar, cerrar, borrar, etc.

Mostrar un mensaje en la barra de estado de Excel VBA| La barra de estado en Excel se puede utilizar como monitor de código. Cuando su código VBA es extenso y realiza varias tareas usando VBA, a menudo deshabilita la actualización de la pantalla para que no vea que la pantalla parpadea.

Desactive los mensajes de advertencia con VBA en Microsoft Excel 2016| Este código no solo deshabilita las alertas de VBA, sino que también aumenta la eficiencia de tiempo del código. Veamos cómo.

Articulos populares:

50 accesos directos de Excel para aumentar su productividad | Acelera tu tarea. Estos 50 accesos directos le permitirán trabajar aún más rápido en Excel.

La función BUSCARV en Excel | Esta es una de las funciones más utilizadas y populares de Excel que se utiliza para buscar valores de diferentes rangos y hojas.

CONTAR.SI en Excel 2016 | Cuente valores con condiciones usando esta asombrosa función. No necesita filtrar sus datos para contar valores específicos. La función Countif es esencial para preparar su tablero.

Cómo usar la función SUMIF en Excel | Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.