Columnas discontinuas en listbox

14/04/2006 - 03:56 por klomkbock | Informe spam
Hola a todos,

Estoy intentando rellenar un listbox de un formulario con un array formado
por tres campos que varian segun unos optionbutton y que pueden no ser
continuos.
Ej:
Dim Titulo as Range, Autor etc
Set Titulo = Range(.etc
Sub .
If optTitulo = True Then
CamposLista = Array(Titulo, Autor, Genero)
ElseIf optPais = True Then
CamposLista = Array(Titulo, Autor, Pais)
End If
' lstSeleccionar es el listbox
lstSeleccionar.List = CamposLista

Realmente lo he probado de varias maneras mas, con redim, con las
propiedades additem, rowsource, con el evento initialize, poniendo el
array en el codigo de cada optionbutton,... y no consigo que me aparezcan
mas que errores. Primero el "Error 70 permiso denegado" que no me dejaba
ejecutar el formulario¿¿??, luego el 381 (creo que resuelto) y ahora,
usando redim, me da el 13, no coinciden los tipos, pero el array esta
declarado como variant.

Si me podeis ayudar o en su defecto darme un enlace a las preguntas y
respuestas sobre los listbox o combobox del foro os lo agradezco.

De antemano muchas gracias.
Un saludo y hasta pronto.
Ivan

Preguntas similare

Leer las respuestas

#1 klomkbock
15/04/2006 - 01:55 | Informe spam
Hola a todos de nuevo.

Lo primero disculparme por duplicar consultas. Este mensaje lo mande al no
aparecer en este foro (grupo de noticias - tu tiempo.net, que es al que yo
accedo normalmente) uno anterior sobre el mismo tema, aunque un poco mas
extenso (incluia todo el codigo usado), pero he descubierto que en el foro
de google si aparecen los dos.

Luego decir que ya he ¿resuelto? la duda, aunque por otra via que no se
muy bien si me valdra al final. Esto es lo que he hecho en cada
optionbutton:

Private Sub optPais_Click()
With Worksheets("Listado")
' corto el rango elgido con el optBut.
.Range("F:F").Cut
' y lo inserto para formar un rango continuo
.Range("D:D").Insert
End With
lstSeleccionar.RowSource = "Listado!b2:d200"
With Worksheets("Listado")
' vuelvo a colocar el rango en su sitio
.Range("d:d").Cut
.Range("G:G").Insert
End With
End Sub

Ahora estoy intentando que las entradas al listbox (lstSeleccionar) se
restrinjan en funcion de la aproximacion al texto introducido en un
textbox (tambien podria ser en un combo) pero tambien en funcion de los
optionbutton,
o sea, que compare lo escrito en el textbox con los registros del campo
indicado con el optB. y los filtre dejando solo los coincidentes. Estoy
probando con autofiltro pero no lo consigo. Quizas con un combo y
matchentry o algo parecido. Bueno, de nuevo, si me podeis ayudar os lo
agradezco.

De antemano gracias.
Un saludo y hasta pronto.
Ivan.

PD: ya he encontrado los foros con las respuestas.
PPD: en cualquier caso si alguien me aclara lo de las matrices (aparte de
la sintaxis de redim) en la primera consulta se lo agradezco.
Respuesta Responder a este mensaje
#2 Héctor Miguel
15/04/2006 - 06:03 | Informe spam
hola, Ivan !

[me parece que] tu consulta YA involucra 'suficientes' [o demasiados?} temas [como] para 'tratarlos' en un solo correo :-(

te puedo sugerir que, dado que los optionbuttons son 'auto-excluyentes' [seleccionar uno DE-selecciona a 'los otros']...
EVITES 'acciones directas' [como eliminar/mover/... rangos y 'similares'] -> AL SOLO EVENTO de un 'click' en los optionbuttons
-> recuerda que las 'acciones' por codigo NO se pueden 'des-hacer' :-((
[sugiero] trabaja con 'variables de preparacion' para que 'las acciones' se ejecuten una vez 'aplicados/verificados' TODOS los 'criterios' ;)

tambien te sugiero que NO utilices el -mismisimo- evento '_click' de la listbox [de tu primer mensaje] para 'rellenarlo'...
Private Sub lstSeleccionar_Click()
lstSeleccionar.List = CamposLista()
End Sub



[ademas] para poder 'llenar' un control [como listas] usando su propiedad ':List = ...'
-> es necesario que la 'asignacion' [si proviene de una matriz] se refiera ya a los 'valores finales' [o sea... valores 'constantes']
[p.e.] -> lstSeleccionar.List = Worksheets("listado").Range("b2:d200").Value
-> suponiendo que el control listbox tiene ya 'asignado' un numero de columnas de acuerdo a los datos que recibira -?-

lo de los 'demas temas pendientes' [matrices, redim, aproximaciones, etc,]... [te aseguro que]... MERECE 'capitulos aparte' :))
[ademas de uno que otro 'clavados' para consultar con el asistente ayuda en linea {F1} de excel-vba]
en caso contrario [probablemente] las propuestas que recibas podrian 'sonarte' a que estan 'en chino' :D

si tu 'prisa' NO es 'demasiada' [como para querer brincarte u omitir algunos pasos intermedios Y comprenderlos]...
comentas detalles mas... 'concretos y especificos' en cuanto a lo que -realmente- necesitas solucionar ? [algo asi como +/- exactamente] :))

saludos,
hector.

... ya he resuelto? la duda, aunque por otra via que no se muy bien si me valdra al final.
Esto es lo que he hecho en cada optionbutton:
Private Sub optPais_Click()
With Worksheets("Listado")
' corto el rango elgido con el optBut.
.Range("F:F").Cut
' y lo inserto para formar un rango continuo
.Range("D:D").Insert
End With
lstSeleccionar.RowSource = "Listado!b2:d200"
With Worksheets("Listado")
' vuelvo a colocar el rango en su sitio
.Range("d:d").Cut
.Range("G:G").Insert
End With
End Sub
Ahora estoy intentando que las entradas al listbox (lstSeleccionar) se restrinjan... a... un textbox... pero tambien en funcion de los optionbutton
Estoy probando con autofiltro pero no lo consigo. Quizas con un combo y matchentry o algo parecido
... de nuevo, si me podeis ayudar os lo agradezco.
PD: ya he encontrado los foros con las respuestas.
PPD: en cualquier caso si alguien me aclara lo de las matrices (aparte de la sintaxis de redim) en la primera consulta se lo agradezco.
Respuesta Responder a este mensaje
#3 klomkbock
15/04/2006 - 18:15 | Informe spam
Hola Hector Miguel, gracias de nuevo.

Tienes razon, la consulta no solo es excesivamente amplia sino ademas
bastante baga. Debe ser que los formularios no son mi fuerte, a pesar de
mis empeños. En cuanto a la ayuda en linea (F1), la verdad es que la uso
con frecuencia (debo tener ya impreso medio manual), pero me temo que mi
neurona no consigue comprender buena parte de su uso del lenguaje, quizas
porque hasta hace muy poco todo esto era un mundo practicamente
desconocido para mi. En fin, disculpa el discurso.

Respecto a lo que quiero conseguir, en este caso no es el eterno proyecto
del que te he hablado en otras ocasiones. Se trata de una especie de
homenaje a una persona muy querida y consiste en una aplicacion para
gestionar la herencia de sus miles de libros entre seis hermanos, para
que, aunque los libros esten dispersos, de alguna manera sigan unidos y
cualquiera de los hermanos pueda saber los que hay y quien los tiene en
cada momento para poder disponer de ellos. Ya se que este culebron a lo
mejor sobra, pero es una manera de ponerte en antecedentes.

Lo que se me ha ocurrido es un listado general que cada uno tendra en su
ordenador y en el que iremos introduciendo los libros que nos quedemos
cada uno, con unos campos basicos (titulo, autor, genero, tema, pais,
hermano que lo tiene, observaciones,...), pero estoy intentando crear un
formulario que aparece al abrir el libro y que solicita lo que se quiere
hacer, pudiendo buscar, añadir, modificar, eliminar, mostrar una/as
ficha/as del/os libro/os seleccionados, ir al listado,..., y seguramente
algunas cosas que se me quedan en el tintero. Ya se que esto implica
muchas dudas, pero no es mi intencion resolverlas todas de golpe, sino ir
poco a poco y ya de paso aprender algo mas de VBA. De hecho tu respuesta
ya disipa un poco algunas de ellas y me encarrila hacia caminos
seguramente mucho mas productivos.

Por otra parte me gustaria preguntarte si te puedo enviar el libro a tu
correo, no para que me resuelvas la papeleta, sino para que le eches un
vistazo y me des tu opinion sobre como afrontarlo. En cualquier caso
comprenderia perfectamente que no te apetezca (somos muchos los que
necesitamos ayuda), y tu negacion en nada rebajaria mi agradecimiento y
respeto.

Por ultimo (aunque no venga al caso), y te aseguro que no se trata de
peloteo, sino de una realidad muy antigua, decirte que tras "verte" a ti y
a muchos otros usuarios del foro (tanto expertos como consultantes) me
reafirmo en un deseo que tenia (mi mujer mas todavia), y es la de visitar
algun dia tu tierra, no para ir a Acapulco precisamente, sino para conocer
a sus gentes y sus tierras, que siempre nos han caido muy bien en la
distancia. Reitero que no es por hacer la pelota, es simplemente que tengo
ganas de decirlo casi desde el primer dia que entre a este foro.

Espero no haberte/os aburrido/aberrado demasiado con tanto rollo.

Un saludo y hasta pronto.
Ivan

PD: no se si al enviar un libro por mail este tambien "transporta" consigo
el codigo y los formularios, aunque supongo que si.
Respuesta Responder a este mensaje
#4 Héctor Miguel
15/04/2006 - 19:57 | Informe spam
hola, Ivan !

... los formularios no son mi fuerte, a pesar de mis empe#os.

... la ayuda en linea (F1)... la uso con frecuencia (debo tener ya impreso medio manual)
pero me temo que mi neurona no consigue comprender buena parte de su uso del lenguaje
quizas porque hasta hace muy poco todo esto era un mundo practicamente desconocido para mi.

... quiero conseguir... una aplicacion para gestionar la herencia de sus miles de libros entre seis hermanos
... aunque los libros esten dispersos... sigan unidos y cualquiera... pueda saber los que hay y quien los tiene
... preguntarte si te puedo enviar el libro a tu correo, no para que me resuelvas la papeleta
... para que le eches un vistazo y me des tu opinion sobre como afrontarlo

.PD: no se si al enviar un libro por mail este tambien "transporta" consigo el codigo y los formularios, aunque supongo que si.



1) debes 'persistir' con el tema de los formularios, recuerda que los conocimientos 'se adquieren' ;)
no 'vienen pre-instalados' en el 'disco duro' de cada persona al nacer :))

2) de igual forma, la ayuda en linea {F1} -generalmente- 'descubre sus secretos' en la medida que se avanza en su estudio/analisis ;)

3) si quieres enviarme [una copia de] tu aplicacion y las instrucciones...
solo quita de la direccion que aparece el 'NO...SPAM...PLS'

4) para que el correo 'transporte' el archivo [y sus componentes]...
busca en tu programa de gestion de correos como/donde -> adjuntar archivos a tu mensaje ;)
[si puedes, te agradeceria enviarlo comprimido -> *.ZIP o *.RAR] ;)

saludos,
hector.
Respuesta Responder a este mensaje
#5 Francisco GMAIL
15/04/2006 - 21:14 | Informe spam
Hola que tal.

solo para comentar si puedes revisar el post Filtrar lista en VBA un poco
mas arriba alli anexe dos archivos los cuales te pueden servir de ejemplo
para lo que requieres con un poco mas de arreglo de tu parte.

O bien si puedes enviar una copia del archivo al personal


Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida