Cargar ComboBox eliminando las filas vacías

Alguien podría ayudarme en la Columna A tengo código de Producto y en la Columna B tengo si hay en Existencia o Inexistencia, quiero que el ComboBox me cargue solo los códigos que tengo en la Columna A que tengan Existencia en la Columna B, evitando también los espacios en blanco siguientes del ultimo código ingresado en la Columna A, muy agradecido si hubiera alguien que pueda brindarme su ayuda

1 Respuesta

Respuesta
1

¿En la columna B cuando hay inexistencia tendremos un cero?

¿O estará vacia?

Primeramente gracias por responder, en la columna B solo estará Inexistencia y vacíos, no hay ceros, navegando por internet encontré este código y efectivamente me funciona, pero solo en un formulario y necesito aplicarlo a 4 formularios que solo tienen 1 ComboBox

Private Sub UserForm_initialize()
CargarLista
End Sub
Private Function CargarList(ByVal List As Variant, ByVal Dato As String)
For i = 0 To List.ListCount - 1
If List.List(i) > Dato Then Exit For
Next
List.AddItem Dato, i
End Function
Private Sub CargarLista()
Dim Fila As Long, i As Long
ComboBox1.Clear
uf = Range("G" & Cells.Rows.Count).End(xlUp).Row
Fila = 2
For fil = Fila To uf
If Len(Sheets(1).Cells(Fila, 7)) = 0 Then GoTo Salto
CargarList ComboBox1, Sheets(1).Cells(Fila, 7).Value
Salto:
Fila = Fila + 1
Next
End Sub

El Error que me marca es al aplicarlo en un segundo formulario es -2147467258 (80004005)

Si podrías orientarme para saber como aplicarlo en los otros 3 formularios.

Te mando mi propuesta: Tenemos los datos en las columnas A y B empezando desde la fila 2 puesto que la fila 1 será el encabezado.(En la hoja1)

En nuestro formulario tenemos un combobox1 y programamos el evento INITIALIZE para que se cargue el combo al arrancar el formulario. (Si quieres puedes utilizar otro evento)

Private Sub UserForm_Initialize()
ComboBox1.Clear
sheets("hoja1").select
Range("a2").Select
Do While ActiveCell.Value <> ""
If Left(ActiveCell.Offset(0, 1), 1) <> "i" Then
ComboBox1.AddItem ActiveCell
End If
ActiveCell.Offset(1, 0).Select
Loop
End Sub

recuerda finalizar y puntuar

Muchas Gracias por el interés y por tu ayuda, sinceramente estoy muy agradecido por el tiempo que has dedicado a mi consulta, mientras revisaba mi correo investigue por otro medio y pude encontrar un código que me ha funcionado muy bien al igual que el tuyo, ahora bien como te darás cuenta en tu código al cambiarle a la Columna "O2" que es la que estoy utilizando ya no me cargaba nada y no se que más debiera de cambiarle, por tal razón he utilizado el que encontré, pero como lo mencione en la aclaración anterior, necesito aplicar este código en 4 Formularios iguales, pero al aplicar este código al segundo formulario me salta el error -2147467258 (80004005), podrías ayudarme para poder aplicar ya sea tu código o este que adjunto en los cuatro formularios, cada formulario se abre dependiendo del resultado que obtengo de determinada celda y no al mismo tiempo.

Private Sub ComboBox1_Enter()
Me.ComboBox1.Clear
For Each celda In Range("O2:O" & Range("O" & Rows.Count).End(xlUp).Row)
If celda <> Empty Then ComboBox1.AddItem celda.Value
Next
End Sub

En tu pregunta inicial decías que había dos columnas por ese motivo mi macro evalúa los datos de la columna A y los compara con el dato que tiene a la derecha y si empieza por i no lo pondrá en el combo y si la celda de la derecha está en blanco si lo cargará en el combo.

Si tus datos empiezan en O2 se supone que en la columna P está nuestro análisis, por lo que analizaremos lo que pone en P2 y así sucesivamente. En mi macro bastará con cambiar el A2 por O2.

Mi consejo es que utilices el evento INITIALIZE de cada uno de los formularios, de esta manera siempre que arranque el formulario se cargará el combo con los datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas