Lista en combo box y suma condicional en macro

Hola primero que todo te felicito por tus consejos, espero me puedas ayudar.
Tengo dos problemas
Tengo una tabla con varias columnas, en una columna hay varios nombres y necesito una macro que resuma los nombres y los ponga en un combobox sin repetir.
El otro problema es que por cada nombre que encuentre según la selección, sume los valores de otra columna parecido a un sumar.si y los ponga en una celda de mi selección
El código que estoy utilizando para los dos problemas es el siguiente:
Dim dato As String
Dim dato1 As String
Dim columna2 As String
Dim columna As String
Dim fila As String
Dim contador As Integer
Dim fila2 As Integer
Dim dato2 As String
Sub buscar(datos As String)
columna = "E"
fila = 2
columna2 = "G"
fila2 = 2
dato = columna & fila
dato2 = columna2 & fila2
If ComboBox3.Value = "ENRIQUE RUGELES" Then
While Hoja4.Range(dato).Value <> ""
dato1 = Hoja4.Range(dato).Value Like datos
If (dato1 = Verdadero) Or (dato1 = True) Then
If contador = 0 Then
Jefez_cbo.AddItem ("Seleccione...")
End If
ComboBox2.AddItem (Hoja4.Range(dato2).Value)
'en este punto me aparece el error 70 permiso denegado y no he podido solucionarlo.
contador = contador + 1
End If
fila = fila + 1
dato = columna & fila
dato2 = columna2 & fila
Wend
Quedo a espera de tus comentarios.
{"lat":4.91583280131316,"lng":-72.7734375}

1 respuesta

Respuesta
1
Este error es muy común, y puede darse por diferentes motivo:
-Intentar modificar un archivo protegido contra escritura
-Intentar abrir un archivo bloqueado por el SO
Mirate si ocurre algo de lo que te he dicho, vuelves a decirme.
>Un saludo
>Julio
Gracias Julio
Ok perfecto, ya me trae los datos, pero me trae todos los datos y yo necesito que me traiga un solo dato sin repetir creo que hay que declarar un objeto collection pero no se cómo se hace esto, el código resultante quedó así:
Dim dato As String
Dim dato1 As String
Dim columna2 As String
Dim columna As String
Dim fila As String
Dim contador As Integer
Dim fila2 As Integer
Dim dato2 As String
Sub buscar(datos As String)
columna = "E"
fila = 2
columna2 = "G"
fila2 = 2
dato = columna & fila
dato2 = columna2 & fila2
If ComboBox3.Value = "ENRIQUE RUGELES" Then
While Hoja4.Range(dato).Value <> ""
dato1 = Hoja4.Range(dato).Value Like datos
If (dato1 = Verdadero) Or (dato1 = True) Then
If contador = 0 Then
Jefez_cbo.AddItem ("Seleccione...")
End If
Jefez_cbo.AddItem (Hoja4.Range(dato2).Value)
contador = contador + 1
End If
fila = fila + 1
dato = columna & fila
dato2 = columna2 & fila
Wend
If contador = 0 Then
Jefez_cbo.Enabled = False
Else
Jefez_cbo.Value = "Seleccione..."
End If                                    'me trae 6687 datos al combobox de solo 6 datos únicos
Else
Jefez_cbo.Enabled = True
End If
End Sub
Gracias por tu ayuda
Evidentemente que te trae todos los datos por la macro no sabe discriminar entre todos los que reúnen tu criterio en este caso "Jefez_Cbo" cual es que tu necesitas, antes debes de limpiar tu lista con el criterio que necesites, ¿entre todos los registros donde aparece el valor que has indicado cual es el que necesitas?.
Mirate cual sería la condición para eliminar los datos de tu combobox y luego armas el código.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas