Incorporar items que cumplan con determinada condicióna un ComboBox de varias columnas

21/04/2007 - 01:23 por Insumos | Informe spam
Gente del Foro:

Tengo un Combobox de dos columnas que debe incorporar items desde una base
de datos (en una hoja llamada "Talon"), siempre y cuando dicho item cumpla
con un determinado requisito (que es que uno de los campos del registro, el
que esta en la columna D de la hoja, este vacio). Lo que yo quiero es que el
codigo vaya a la base de datos, se fije que registros cumplen con la
condición especificada e incorporar al listado del ComboBox esos registros
de la siguiente manera: en la columna 1 del CB los campos que se encuentra
en las columnas A y B de la hoja, y en la columna 2 del CB el campo que se
encuentra en la columna C.
Hize este código:

Dim celdoN As Range

With Worksheets("Talon")
If .[A2] <> "" Then
For Each celdoN In .Range("C2:C" & .[C65536].End(xlUp).Row)
If celdoN.Offset(0, 1) = Empty Then
UserForm2.ComboBox3.AddItem celdoN.Offset(0, -2) & Chr(32) &
celdoN.Offset(0, -1)
UserForm2.ComboBox3.AddItem celdoN
End If
Next
End If
End With

Mediante este código logro casi todos los objetivos, excepto que, como era
de esperarse, agrega lo que esta en la columnas A y B como un item separado
de lo que esta en la columna C, ya que no se como decirle al código que
celdoN.Offset(0, -2) & Chr(32) & celdoN.Offset(0, -1) lo tiene que poner en
la columna 1 del CB y celdoN lo tiene que poner en la columna 2 del CB,
siendo todo un mismo item del CB.
Espero que haya explicado bien mi dilema!
Desde ya muchas gracias!!

Mariano


CONTADURIA
 

Leer las respuestas

#1 Ivan
21/04/2007 - 03:56 | Informe spam
hola Mariano, echale un vistazo a el codigo que te pongo al final, a
ver si te ayuda.

de todas formas te hago un par de comentarios (aunque no me hagas
demasiado caso) sobre el codigo que expones por si te sirven:

1ª respecto a esta parte-> If celdoN.Offset(0, 1) = Empty Then

no estoy seguro de hasta que punto es valido 'Empty' en este caso,
supongo que si, pero en cualquier caso, y aunque no se si es mejor,
creo que te valdria con esto:

If celdoN.Offset(0, 1) = "" Then

es decir, dos comillas dobles seguidas que indican espacio vacio (o
sea 'nada', que no es lo mismo que un espacio " ", las mismas comillas
pero con un espacio dentro)

2º en el uso del metodo Additem (creo que) debes incluir
'explicitamente' la propiedad Value del rango a cargar en el combo,
pues sino te da error ( con additem no estoy del todo seguro, pero con
List si es seguro). Quedaria en tu caso asi:->

UserForm2.ComboBox3.AddItem celdoN.Value

bueno, espero no liarte mas y y te ayude en algo

un saludo y hasta pronto
Ivan

aqui va el codigo para que lo adapte (ojo he cambiado algunos nombres,
revisalo y adaptalo)

Sub ComboInsumnos()
Dim Celda As Range, i As Long
With Worksheets("Talon")
If .[A2] = "" Then Exit Sub
i = 0
For Each Celda In .Range("d2:d" & .[a65536].End(xlUp).Row)
If Celda = "" Then
With UserForm2.ComboBox1
.AddItem Celda.Offset(0, -3).Value _
& Chr(32) & Celda.Offset(0, -2).Value
.List(i, 1) = Celda.Offset(0, -1).Value
End With
i = i + 1
End If
Next
End With
End Sub

Preguntas similares