Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Control ActiveX Combobox Incrustado en Hoja de Excel

Al igual que en el post Llenar combobox y buscar datos aquí les muestro algo parecido pero sin formularios, ya que muchas veces es necesario tener en la misma hoja de Excel un combobox incrustado, llamado Control ActiveX, desde el cual se pueda seleccionar nombres o cualquier tipo de datos, para posteriormente realizar una búsqueda de estos datos o  cualquier otra acción que se requiera hacer con lo datos de la hoja de cálculo, en este  ejemplo de macro de Excel o procedimiento de VBA para Excel, te voy a mostrar como se inserta y programa el control para que puedas usarlo en tu libro; si requieres saber sobre como habilitar un control activex dependiendo de criterios mira acá.

Para insertar el control se debe ir al menú programador, si no lo tienes activo debes primero ir al menú  archivo luego a opciones y posteriormente a personalizar cinta de opciones, ahí activas la casilla de programador, una vez hecho esto va a salir en la cinta de opciones o barra de menú, en  la ilustración siguiente se muestra lo dicho, haz click para agrandar la imagen.


Una vez hecho lo mencionado en el párrafo anterior, se debe ir al menú programador y luego controles y por último a insertar, ahí seleccionamos Control ActiveX y elegimos el combo box, luego arrastramos en la hoja de cálculo y se inserta el control seleccionado, la imagen muestra lo mencionado.

Una vez hecho esto, hacemos  doble  click en el control y se abre el editor de VBA, lo que tenemos que hacer acá es copiar el código que está en este post y adaptarlo a lo que necesite cada uno, ya que este código esta adaptado al ejemplo que puedes descargar haciendo click acá.

El código realiza un bucle con el comando For … Next recorre las filas  desde la fila dos hasta la última fila con datos, guardada en la variable uf; para luego contar la cantidad de veces  que una persona cumplió un rol determinado, una vez seleccionado el nombre en el Combobox, se corre una macro que compara el nombre seleccionado con el nombre de la columna F, como así también el nombre de la columna G, pero que a su vez sea igual con el rol cumplido y que está indicado en la columna S1, T1 y U1.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Determinado si el dato verdadero suma en la variable correspondiente acumulando, en caso de ser falso sigue con la próxima columna y así hasta terminar con la totalidad de datos con valores.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Las 1000 mejores macros de Excelbuscar en listbox mientras escribes en textbox, como copiar tablas vinculadas de Excel a Wordconectar Excel con Access y muchos ejemplos más.

  
Código que se debe insertar en la programación del Control ActiveX Combobox:

Private Sub ComboBox1_Change()
Dim uf, ufcat, filadir, filacat, contad, contap, contadc, contamc As Integer
contad = 0
contap = 0
contadc = 0
contamc = 0
‘Obtiene datos para llenar el combo box
uf = Sheets(«Proyectos»).Range(«Z» & Rows.Count).End(xlUp).Row
listado = «Z2:Z» & uf
ComboBox1.ListFillRange = listado
perfind = ComboBox1
ufcat = Sheets(«Proyectos»).Range(«H» & Rows.Count).End(xlUp).Row
For i = 2 To ufcat
a = Sheets(«Proyectos»).Cells(i, 6)
If a = perfind Then contad = contad + 1
If Sheets(«Proyectos»).Cells(i, 7) = perfind And Sheets(«Proyectos»).Cells(i, 8) = Sheets(«Proyectos»).Cells(1, 19) Then contap = contap + 1
If Sheets(«Proyectos»).Cells(i, 7) = perfind And Sheets(«Proyectos»).Cells(i, 8) = Sheets(«Proyectos»).Cells(1, 20) Then contadc = contadc + 1
If Sheets(«Proyectos»).Cells(i, 7) = perfind And Sheets(«Proyectos»).Cells(i, 8) = Sheets(«Proyectos»).Cells(1, 21) Then contamc = contamc + 1
Next i

Sheets(«Proyectos»).Cells(2, 18) = contad
Sheets(«Proyectos»).Cells(2, 19) = contap
Sheets(«Proyectos»).Cells(2, 20) = contadc
Sheets(«Proyectos»).Cells(2, 21) = contamc
End Sub

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends