.
En este ejemplo de macro de Excel o procedimiento de VBA para Excel, se ejemplifica como llenar un combobox insertado en un formulario o userform de VBA, seleccionado el ítems del combo box, previo hacer una serie de verificaciones, como por ejemplo que el otro combobox del formulario no esté vacío, en ese caso sale un mensaje, y se termina el procedimiento hasta tanto no se seleccione los datos solicitados. Haciendo click en la imágen se observa una vista previa del formulario que contiene los procedimientos de VBA o macros para Excel.
Una vez seleccionado el dato correspondiente, el nombre a buscar, se debe seleccionar el archivo donde buscar, siendo importante cargar la dirección correcta en la hoja archivo, ya que de ahí toma el formulario la dirección del fichero donde buscar los datos. Una vez seleccionados los datos 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.
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. Los valores obtenidos son expuestos en caso de buscar en el archivo 1 (archivo donde está la macro), en la fila dos desde la columna S a la T; en caso de buscar en el archivo 2 ( archivo Anexo) los datos se registran en la fila 3 también en las columnas S a la T.
Para ver el ejemplo en funcionamiento se deben descargar los dos archivos tanto el que tiene la macro como el auxiliar donde busca los datos, para descargar los archivos debes hacer click en el link, bajar el archivo uno y aquí para bajar el archivo dos, los archivos debes guardarlos en tu PC, y en la hoja archivo del ejemplo debes guardar a partir de la celda A2 la dirección exacta que tiene en tu PC, para que la macro pueda buscar y no se produzcan errores.
Para finalizar con el presente ejemplo te recomiendo que leas un excelente libro sobre Excel el que te ayudará manejar las planillas de cálculo, debes hacer click acá.
También te aconsejo que leas el post Llenar combobox y buscar datos, si estás interesado en saber más en detalle, ver como funciona un combobox o adaptarlo a un proyecto similar que estés desarrollando, como decía está muy relacionado con lo aquí expuesto.
Public nomlibro, dire, dire1, p As String
Range(«r2:u3») = ClearContents
If ComboBox2 = Empty Then
MsgBox («Debe seleccionar Nombre»), vbInformation, «AVISO»
ComboBox2.SetFocus
Exit Sub
End If
ComboBox2_Change
End Sub
On Error Resume Next
Application.ScreenUpdating = False
Dim uf, ufcat, filadir, filacat, contad, contap, contadc, contamc As Integer
MsgBox («Debe seleccionar Nombre»), vbInformation, «AVISO»
ComboBox1.SetFocus
Exit Sub
End If
nomlibro = ActiveWorkbook.Name
p = ActiveWorkbook.Path
dire1 = p & «» & nomlibro
If dire = dire1 Then
TextBox1 = Clear
TextBox2 = Clear
TextBox3 = Clear
TextBox4 = Clear
contad = 0
contap = 0
contadc = 0
contamc = 0
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
If nomlibro <> dire Then
Sheets(«Proyectos»).Cells(2, 18) = contad
Sheets(«Proyectos»).Cells(2, 19) = contap
Sheets(«Proyectos»).Cells(2, 20) = contadc
Sheets(«Proyectos»).Cells(2, 21) = contamc
Else
Sheets(«Proyectos»).Cells(3, 18) = contad
Sheets(«Proyectos»).Cells(3, 19) = contap
Sheets(«Proyectos»).Cells(3, 20) = contadc
Sheets(«Proyectos»).Cells(3, 21) = contamc
End If
TextBox1 = contad
TextBox2 = contap
TextBox3 = contadc
TextBox4 = contamc
Else
Application.Workbooks.Open dire
Sheets(«Proyectos»).Select
TextBox1 = Clear
TextBox2 = Clear
TextBox3 = Clear
TextBox4 = Clear
contad = 0
contap = 0
contadc = 0
contamc = 0
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
If dire = dire1 Then
Sheets(«Proyectos»).Cells(2, 18) = contad
Sheets(«Proyectos»).Cells(2, 19) = contap
Sheets(«Proyectos»).Cells(2, 20) = contadc
Sheets(«Proyectos»).Cells(2, 21) = contamc
Else
ActiveWorkbook.Close False
Sheets(«Proyectos»).Cells(3, 18) = contad
Sheets(«Proyectos»).Cells(3, 19) = contap
Sheets(«Proyectos»).Cells(3, 20) = contadc
Sheets(«Proyectos»).Cells(3, 21) = contamc
End If
TextBox1 = contad
TextBox2 = contap
TextBox3 = contadc
TextBox4 = contamc
Application.ScreenUpdating = True
End Sub
Unload Me
End Sub
Application.ScreenUpdating = False
ComboBox1.Clear
Sheets(«Nom»).Select
Range(«A2»).Select
While ActiveCell <> Empty
ComboBox1.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Wend
Sheets(«Archivo»).Select
Range(«A2»).Select
While ActiveCell <> Empty
ComboBox2.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Wend
Application.ScreenUpdating = True
End Sub
Código a insertar en un módulo
Sub cargaform()
UserForm1.Show
End Sub
.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends