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.
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
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