Copiar listbox a otra listbox vba

juliet -  
 juliet -
Hola,

Quisiera copiar el contenido de un listbox a otro listbox de un userform diferente, con la ayuda de un commandbutton.
Lo que he escrito no funciona. ¿Hay algo que cambiar en la propiedad del listbox? Porque cuando lo hago con textbox funciona.

Private Sub CommandButton1_Click()
Moyennehistorique.ListBox2.Value = Me.ListBox1.Value
End Sub

Muchas gracias

Configuración: Windows XP / Internet Explorer 8.0

8 respuestas

juliet
 
Gracias por tu rápida respuesta,

Quiero copiar la lista completa

Gracias
1
Krysstof Mensajes publicados 1659 Estado Miembro 295
 
""Valor" en una lista desplegable representa únicamente el valor seleccionado.

¿Quieres copiar todo el contenido (es decir, la lista completa)? ¿O solo el valor seleccionado?
0
Krysstof Mensajes publicados 1659 Estado Miembro 295
 
copia el contenido de listbox1 en listbox2 :

Dim i As Integer

For i = 0 To ListBox1.ListCount - 1
ListBox2.AddItem ListBox1.List(i)
Next

diviértete bien
0
juliet
 
Gracias, pero no funciona, escribí esto:

Private Sub CommandButton1_Click()

Dim i As Integer

For i = 0 To historiqueetm.ListBox1.ListCount - 1
Me.ListBox1.AddItem historiqueetm.ListBox1.List(i)
Next

End Sub

Porque son 2 userforms diferentes.

Muchas gracias
0
Krysstof Mensajes publicados 1659 Estado Miembro 295
 
no funciona = ¿qué?

un mensaje de error, o no hace nada?

de lo contrario, "Me." no es necesario. ¿y cómo se carga históricoetm?
0
juliet
 
Acabo de quitar el Me, pero aún no hay nada.
No tengo un mensaje de error, pero no pasa nada.

No entiendo cómo se carga??

Gracias
0
Krysstof Mensajes publicados 1659 Estado Miembro 295
 
euh, bien si no da mensaje de error, eso significa que funciona

pero tu listbox fuente no contiene ningún valor, cuando pregunto cómo se carga, quiero decir cómo se alimenta el contenido de la listbox?

todos los botones, listbox, combobox, textbox, etc. son controles.

en un userform de Excel, debe ser inicializado (cargado, alimentado) para poder leer el contenido de este control.

la ventaja de Excel es que una vez que un userform está cargado, y que sus controles están inicializados, puedes cerrar este userform y llamar los valores de este userform en otros userforms, pero no se debe permitir que el procedimiento de cierre vacíe los controles, o que la alimentación del control sea dinámica y dependa de otros valores.

añade
Msgbox históricoetm.ListBox1.ListCount
en la primera línea del clic del botón

te hará un popup con el número de líneas vistas en la listbox.
si es 0 o -1 eso significa que la listbox no está inicializada.

tendrás que dar más información sobre cómo abres tus userforms, más código.
0
juliet
 
Gracias por estas precisiones,

he añadido MsgBox históricoetm.ListBox1.ListCount
y me ha dado 0.

En tengo un commandbutton en un userform que abre 3 userforms diferentes:
Private Sub CommandButton1_Click()
históricoetm.Show
histórico granulo.Show
históricos químicos.Show

Dim i As Integer
MsgBox históricoetm.ListBox1.ListCount
For i = 0 To históricoetm.ListBox1.ListCount - 1
ListBox1.AddItem históricoetm.ListBox1.List(i)
Next

End Sub

En estos 3 userforms, hay una listbox que se alimenta así:

Private Sub UserForm_activate()
TextBox1.Enabled = False
i = 4

If TextBox1.Value = "SIL9" Then
Do While Worksheets("análisis químicos").Cells(3, i) <> ""
If IsNumeric(Worksheets("análisis químicos").Cells(3, i).Value) Then
ListBox1.AddItem Worksheets("análisis químicos").Cells(2, i).Value
End If
i = i + 1
Loop
End If
se repite aproximadamente 70 veces y eso funciona impecablemente
End Sub

Al principio no había hecho 3 userforms diferentes, pero escribía directamente en mis listbox, pero al final me dijo procedimiento demasiado largo, por eso llegué a 3 userforms diferentes.

y en realidad quiero que los datos de mis 3 userforms estén en mis 3 listbox del userform de inicio y me gustaría que estos 3 userforms no aparecieran.

Espero haber sido claro ...
Gracias por tu comprensión.
0