combobox por codigo ?

03/08/2007 - 19:32 por José A. Castrejón | Informe spam
Hola Buenos dias

Teniendo 2 hojas ALUMNOS y CAPTURA, en la primera tengo una tabla con 5
columnas:
Clave,Nombre,Status,Matricula,Grupo

Tengo definido el rango ALU desde A14:E129

En la hoja CAPTURA tengo un combobox al que le puse las sigientes propiedades

Listfillrange=ALU
LINKEDCELLÕ
COLUMNCOUNT=2
COLUMNBOUND=1

Despues tengo en otra celda la formula
Buscarv(valor(d5),alu,2,0)) y Buscarv(valor(d5),alu,3,0))...


Esto funciona bien hasta ahora pero quisiera llenar el combo
solo con los alumnos con Status "A"

entonces en el evento Activate de la hoja puse :

Dim I
Dim Al as worksheet

Set Al=sheets("ALUMNOS")

COmboBox1.clear
ComboBox1.columncount=2


For I = 14 to 29

If Al.cells(I,3)="A" then
ComboBox1.additem Al.cells(I,1)
End If
Next

Pero como lleno la segunda columna ? para que se vea el codigo y el nombre,
tal y como lo hago con el metodo anterior
de hecho no encontre en codigo la propiedad columnbound


Alguien (no recuerdo quien) me dijo que no se poda hacer por codigo, y me
ofrecio la solución :

ComboBox1.additem Al.cells(I,1) & al.cells(I,2)

y esto funciona pero el valor de retorno es la cadena completa Codigo-alumno

entonces como recupero el valor solo de el codigo ? para seguir usando el
buscarv?
Se puede hacer esto sin que se tengan que "unir" los 2 datos ?




Saludos y gracias por su tiempo
 

Leer las respuestas

#1 David
04/08/2007 - 03:00 | Informe spam
Hola, José.

Claro que se puede hacer sin tener que unir los dos datos. Hay varias
formas, así que mientras alguien sugiere algo mejor, te propongo lo que yo he
hecho: que utilices la propiedad List. Esta propiedad requiere que primero
cargues los datos que integrarás al combobox en un arreglo. Esto lo podrías
hacer más o menos de la siguiente manera:

Suponiendo que los códigos se encuentran en A14:A29, y los nombres en B14:B29…

Dim Alumnos(15,1), J as Integer
J=0
For I to 29
If Al.cells(I,3)=”A” then
Alumnos(J,0)=Al.Cells(I,1)
Alumnos(J,1)=Al.Cells(I,2)
J=j+1
End If
Next I

Una vez cargados los valores al arreglo, deberías definir la cantidad de
columnas del ComboBox, el ancho de las mismas (si no estoy mal, 70 es más o
menos una pulgada) y asignar el arreglo al mismo:

ComboBox1.ColumnCount = 2
ComboBox1.ColumnWidths = “70;140”
ComboBox1.List() = Alumnos

Disculpa si hay algún error de sintaxis, pero escribo rápido y sin probar el
código. Pruébalo tú, y comentas. Si nadie más nos da una mano, te leo el
lunes, pues voy saliendo de la oficina, y el fin de semana ¡es sagrado!...
Si lo prefieres, escríbeme. Mi dirección está en mi perfil. Así podríamos
revisar el asunto con datos más reales… el lunes.

Saludos. Que tengas un buen fin de semana.




"José A. Castrejón" escribió:

Hola Buenos dias

Teniendo 2 hojas ALUMNOS y CAPTURA, en la primera tengo una tabla con 5
columnas:
Clave,Nombre,Status,Matricula,Grupo

Tengo definido el rango ALU desde A14:E129

En la hoja CAPTURA tengo un combobox al que le puse las sigientes propiedades

Listfillrange=ALU
LINKEDCELLÕ
COLUMNCOUNT=2
COLUMNBOUND=1

Despues tengo en otra celda la formula
Buscarv(valor(d5),alu,2,0)) y Buscarv(valor(d5),alu,3,0))...


Esto funciona bien hasta ahora pero quisiera llenar el combo
solo con los alumnos con Status "A"

entonces en el evento Activate de la hoja puse :

Dim I
Dim Al as worksheet

Set Al=sheets("ALUMNOS")

COmboBox1.clear
ComboBox1.columncount=2


For I = 14 to 29

If Al.cells(I,3)="A" then
ComboBox1.additem Al.cells(I,1)
End If
Next

Pero como lleno la segunda columna ? para que se vea el codigo y el nombre,
tal y como lo hago con el metodo anterior
de hecho no encontre en codigo la propiedad columnbound


Alguien (no recuerdo quien) me dijo que no se poda hacer por codigo, y me
ofrecio la solución :

ComboBox1.additem Al.cells(I,1) & al.cells(I,2)

y esto funciona pero el valor de retorno es la cadena completa Codigo-alumno

entonces como recupero el valor solo de el codigo ? para seguir usando el
buscarv?
Se puede hacer esto sin que se tengan que "unir" los 2 datos ?




Saludos y gracias por su tiempo

Preguntas similares