Limpiar listbox

12/10/2004 - 01:35 por Irene | Informe spam
Tengo el siguiente codigo que me introduce items en el
listbox2 dependiendo de la seleccion del listbox1, por
cada seleccion en el listbox1 necesito limpiar los items
del listbox2 y meter los nuevos o en su defecto quitar la
seleccion del listbox2, desafortunadamente me manda error
en la linea "listbox2.clear", "error no especificado"

ListBox2.Clear
For r = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(r) Then
c = ListBox1.List(r)
ListBox2.RowSource = "" & c
End If
Next r
For rr = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(rr) Then
cc = ListBox2.List(rr)
Cells(2, 1) = cc
End If
Next rr

si quito la linea "listbox2.clear", al dar clic en un item
del listbox2 (esto se ejecuta por el evento click) el
codigo se ejecuta correctamente, el problema esta en que
si dan click sobre otro item del listbox1 este se ejecuta
sin tener que dar click sobre un item del listbox2 ya que
el item del listbox2 se queda seleccionado por la
seleccion del item del listbox1 anterior, existe otra
forma de limpiar el listbox o en su defecto quitar la
seleccion?

Espero haberme explicado y de igual manera poder contar
con su ayuda

Preguntas similare

Leer las respuestas

#1 Irene
13/10/2004 - 00:55 | Informe spam
Gracias Fer, y disculpa la estructura, solo asi no me
pierdo, pero bueno voy a seguir tu consejo, por otro lado
permiteme explicarte como funciona mi codigo, supongamos
que tengo lo siguiente:

A B C D
1 Polanco Valles Mante Mty
2 Pb Pb PB Mezann
3 1 1 1 Pb
4 2 Pa 2 1
5 3 3 2
6 Azot

los nombres de la fila 1, columnas a,b,c y d son los
item's del listbox1, cada uno por debajo tiene niveles
(pisos de un edificio), dependiendo de la seleccion del
listbox1 me tendra que poner en el listbox2 el listado que
se encuentra por debajo de cada uno de los nombre de la
fila 1, es decir,

si selecciono en el listbox1 "Polanco" el listbox2 me
debera mostrar:

Pb
1
2
3
Azot

y asi sucesivamente, hasta aqui todo esta ok, el problema
es que cuando selecciono otro item del listbox1
p.e. "Valles" si me pone en el listbox2

Pb
1
Pa

pero si la seleccion anterior del listbox2 concuerda con
la siguiente seleccion del listbox1, p.e. "Pb" o "1", se
ejecuta el codigo, como te habia mencionado este se
ejecuta dando click en el listbox2.

trate con ListBox2.Clear pero me arroja error, tambien
probe con ListBox2.Selected(rr) = False pero no me hace
nada, ambos los pongo al inicio del listbox1 antes del For

Espero que el ejemplo sirva para que me ayudes a
solucionar esto

Gracias Irene
Respuesta Responder a este mensaje
#2 Völkl
13/10/2004 - 21:21 | Informe spam
Comprueba la fecha de tu ordenador, hoy es dia 13

"Fer" ha escrit en el missatge dels grups de
discussió:OL%
Hola Irene:
Después de leer todo detenidamente llegue a estar más confundido.
Ejecute este código y no tuve ningún inconveniente.
Si esto no es, mandame el archivo a que seguro lo


voy
a terminar entendiendo

Private Sub ListBox1_Change()
Dim r As Integer
Dim rr As Integer
Dim cc As String

For rr = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(rr) Then
cc = ListBox2.List(rr)
Sheets(1).Cells(2, 1) = cc
End If
Next rr

ListBox2.Clear

For r = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(r) Then
c = ListBox1.List(r)
ListBox2.AddItem c
End If
Next r

End Sub

Nota: si la propiedad del ListBox "Multiselect" está en 0, no te va a
funcionar la propiedad selected

Saludos, fer


"Irene" escribió en el mensaje
news:343401c4b0ae$a3ab3100$
> Gracias Fer, y disculpa la estructura, solo asi no me
> pierdo, pero bueno voy a seguir tu consejo, por otro lado
> permiteme explicarte como funciona mi codigo, supongamos
> que tengo lo siguiente:
>
> A B C D
> 1 Polanco Valles Mante Mty
> 2 Pb Pb PB Mezann
> 3 1 1 1 Pb
> 4 2 Pa 2 1
> 5 3 3 2
> 6 Azot
>
> los nombres de la fila 1, columnas a,b,c y d son los
> item's del listbox1, cada uno por debajo tiene niveles
> (pisos de un edificio), dependiendo de la seleccion del
> listbox1 me tendra que poner en el listbox2 el listado que
> se encuentra por debajo de cada uno de los nombre de la
> fila 1, es decir,
>
> si selecciono en el listbox1 "Polanco" el listbox2 me
> debera mostrar:
>
> Pb
> 1
> 2
> 3
> Azot
>
> y asi sucesivamente, hasta aqui todo esta ok, el problema
> es que cuando selecciono otro item del listbox1
> p.e. "Valles" si me pone en el listbox2
>
> Pb
> 1
> Pa
>
> pero si la seleccion anterior del listbox2 concuerda con
> la siguiente seleccion del listbox1, p.e. "Pb" o "1", se
> ejecuta el codigo, como te habia mencionado este se
> ejecuta dando click en el listbox2.
>
> trate con ListBox2.Clear pero me arroja error, tambien
> probe con ListBox2.Selected(rr) = False pero no me hace
> nada, ambos los pongo al inicio del listbox1 antes del For
>
> Espero que el ejemplo sirva para que me ayudes a
> solucionar esto
>
> Gracias Irene



Respuesta Responder a este mensaje
#3 Irene
14/10/2004 - 00:24 | Informe spam
No tendria inconveniente en mendarte el archivo,
desafortunadamente al ejecutarlo hace extraccion de datos
de otros libros y estos no estan en mi poder, por otro
lado quizas exista una forma de conexion entre tu equipo y
el mio para mostrarte el funcionamiento de los codigos,
dime si se puede

Gracias Irene

Volki:

Gracias, tenes razon, esto fue porque estoy haciendo un


programa en vb y
necesitaba modificar hora y fecha para probarlo

Un problema muy comun en mi

Saludos, fer

"Völkl" <Vö escribió en el mensaje
news:#
Comprueba la fecha de tu ordenador, hoy es dia 13

"Fer" ha escrit en el missatge dels




grups de
discussió:OL%
> Hola Irene:
> Después de leer todo detenidamente llegue a estar más




confundido.
> Ejecute este código y no tuve ningún inconveniente.
> Si esto no es, mandame el archivo a




que seguro lo
voy
> a terminar entendiendo
>
> Private Sub ListBox1_Change()
> Dim r As Integer
> Dim rr As Integer
> Dim cc As String
>
> For rr = 0 To ListBox2.ListCount - 1
> If ListBox2.Selected(rr) Then
> cc = ListBox2.List(rr)
> Sheets(1).Cells(2, 1) = cc
> End If
> Next rr
>
> ListBox2.Clear
>
> For r = 0 To ListBox1.ListCount - 1
> If ListBox1.Selected(r) Then
> c = ListBox1.List(r)
> ListBox2.AddItem c
> End If
> Next r
>
> End Sub
>
> Nota: si la propiedad del ListBox "Multiselect" está




en 0, no te va a
> funcionar la propiedad selected
>
> Saludos, fer
>
>
> "Irene"




escribió en el mensaje
> news:343401c4b0ae$a3ab3100$
> > Gracias Fer, y disculpa la estructura, solo asi no




me
> > pierdo, pero bueno voy a seguir tu consejo, por




otro lado
> > permiteme explicarte como funciona mi codigo,




supongamos
> > que tengo lo siguiente:
> >
> > A B C D
> > 1 Polanco Valles Mante Mty
> > 2 Pb Pb PB Mezann
> > 3 1 1 1 Pb
> > 4 2 Pa 2 1
> > 5 3 3 2
> > 6 Azot
> >
> > los nombres de la fila 1, columnas a,b,c y d son los
> > item's del listbox1, cada uno por debajo tiene




niveles
> > (pisos de un edificio), dependiendo de la seleccion




del
> > listbox1 me tendra que poner en el listbox2 el




listado que
> > se encuentra por debajo de cada uno de los nombre




de la
> > fila 1, es decir,
> >
> > si selecciono en el listbox1 "Polanco" el listbox2




me
> > debera mostrar:
> >
> > Pb
> > 1
> > 2
> > 3
> > Azot
> >
> > y asi sucesivamente, hasta aqui todo esta ok, el




problema
> > es que cuando selecciono otro item del listbox1
> > p.e. "Valles" si me pone en el listbox2
> >
> > Pb
> > 1
> > Pa
> >
> > pero si la seleccion anterior del listbox2




concuerda con
> > la siguiente seleccion del listbox1, p.e. "Pb"




o "1", se
> > ejecuta el codigo, como te habia mencionado este se
> > ejecuta dando click en el listbox2.
> >
> > trate con ListBox2.Clear pero me arroja error,




tambien
> > probe con ListBox2.Selected(rr) = False pero no me




hace
> > nada, ambos los pongo al inicio del listbox1 antes




del For
> >
> > Espero que el ejemplo sirva para que me ayudes a
> > solucionar esto
> >
> > Gracias Irene
>
>
>






.

Respuesta Responder a este mensaje
#4 Irene
14/10/2004 - 01:40 | Informe spam
otra cosa que olvidaba mencionar, en el contenido de la
variable "c" queda guardado el nombre de la seleccion del
listbox1, este nombre hace referencia a un nombre de rango
definido, es decir, en lugar de poner listbox2.rowsurce
= "a1:a10" utilizo listbox2.rouwsource = "" & c para que
me de como resultado listbox2.rowsource = "XXXX"
donde "xxxx" es el nombre del item de la seleccion del
listbox1, este nombre contiene el listado de niveles de un
almacen

espero me puedas ayudar



Hola Irene:
Después de leer todo detenidamente llegue a estar más


confundido.
Ejecute este código y no tuve ningún inconveniente.
Si esto no es, mandame el archivo a


que seguro lo voy
a terminar entendiendo

Private Sub ListBox1_Change()
Dim r As Integer
Dim rr As Integer
Dim cc As String

For rr = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(rr) Then
cc = ListBox2.List(rr)
Sheets(1).Cells(2, 1) = cc
End If
Next rr

ListBox2.Clear

For r = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(r) Then
c = ListBox1.List(r)
ListBox2.AddItem c
End If
Next r

End Sub

Nota: si la propiedad del ListBox "Multiselect" está en


0, no te va a
funcionar la propiedad selected

Saludos, fer


"Irene" escribió en


el mensaje
news:343401c4b0ae$a3ab3100$
Gracias Fer, y disculpa la estructura, solo asi no me
pierdo, pero bueno voy a seguir tu consejo, por otro




lado
permiteme explicarte como funciona mi codigo, supongamos
que tengo lo siguiente:

A B C D
1 Polanco Valles Mante Mty
2 Pb Pb PB Mezann
3 1 1 1 Pb
4 2 Pa 2 1
5 3 3 2
6 Azot

los nombres de la fila 1, columnas a,b,c y d son los
item's del listbox1, cada uno por debajo tiene niveles
(pisos de un edificio), dependiendo de la seleccion del
listbox1 me tendra que poner en el listbox2 el listado




que
se encuentra por debajo de cada uno de los nombre de la
fila 1, es decir,

si selecciono en el listbox1 "Polanco" el listbox2 me
debera mostrar:

Pb
1
2
3
Azot

y asi sucesivamente, hasta aqui todo esta ok, el




problema
es que cuando selecciono otro item del listbox1
p.e. "Valles" si me pone en el listbox2

Pb
1
Pa

pero si la seleccion anterior del listbox2 concuerda con
la siguiente seleccion del listbox1, p.e. "Pb" o "1", se
ejecuta el codigo, como te habia mencionado este se
ejecuta dando click en el listbox2.

trate con ListBox2.Clear pero me arroja error, tambien
probe con ListBox2.Selected(rr) = False pero no me hace
nada, ambos los pongo al inicio del listbox1 antes del




For

Espero que el ejemplo sirva para que me ayudes a
solucionar esto

Gracias Irene





.

Respuesta Responder a este mensaje
#5 Fer
15/10/2004 - 08:53 | Informe spam
Hola:
Proba con esto

ListBox2.Clear

For r = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(r) Then
c = ListBox1.List(r)
ListBox2.AddItem c
End If
Next r

For rr = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(rr) Then
cc = ListBox2.List(rr)
Sheets(1).Cells(2, 1) = cc
End If
Next rr

1º Te aconsejo que respetes el lenguaje estructurado
2º No entiendo el 2º For Next, ya que al ejecutar el procedimiento jamás
podría haber un item seleccionado eb el ListBox2

Saludos, fer




"Irene" escribió en el mensaje
news:2eab01c4afeb$0b5fce60$
Tengo el siguiente codigo que me introduce items en el
listbox2 dependiendo de la seleccion del listbox1, por
cada seleccion en el listbox1 necesito limpiar los items
del listbox2 y meter los nuevos o en su defecto quitar la
seleccion del listbox2, desafortunadamente me manda error
en la linea "listbox2.clear", "error no especificado"

ListBox2.Clear
For r = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(r) Then
c = ListBox1.List(r)
ListBox2.RowSource = "" & c
End If
Next r
For rr = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(rr) Then
cc = ListBox2.List(rr)
Cells(2, 1) = cc
End If
Next rr

si quito la linea "listbox2.clear", al dar clic en un item
del listbox2 (esto se ejecuta por el evento click) el
codigo se ejecuta correctamente, el problema esta en que
si dan click sobre otro item del listbox1 este se ejecuta
sin tener que dar click sobre un item del listbox2 ya que
el item del listbox2 se queda seleccionado por la
seleccion del item del listbox1 anterior, existe otra
forma de limpiar el listbox o en su defecto quitar la
seleccion?

Espero haberme explicado y de igual manera poder contar
con su ayuda

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida