He agregado un ListBox a una HOJA (no a un "UserForm") Hice esto con el mouse. Hice clic en el pequeño icono de Martillo y llave inglesa.¿Cómo me refiero a un objeto de controles, en una hoja de trabajo, usando un nombre de variable?
Este ListBox parece estar referenciada fácilmente usando código como este:
ListBox1.Clear
o
ListBox1.AddItem("An option")
Sin embargo, tengo tres de estos ListBoxes (llamado, convenientemente, ListBox1, ListBox2, y ListBox3) y quiero escribir una función para rellenarlos con datos de matriz, como este:
Call populate_listbox(ListBox2, designAreaArray)
Donde el primer argumento es el nombre de la lista, el 2º es la información.
Pero no sé cómo enviar "ListBox2" correctamente, o consultarlo correctamente dentro de la función.
Por ejemplo:
Dim controlName as string
controlName = "ListBox1"
no funciona, incluso si defino la función como sigue:
Sub populate_listbox(LB As ListBox, dataArray As Variant)
Dim i As Integer: i = 0
For i = LBound(dataArray, 2) + 1 To UBound(dataArray, 2) ' Skip header row
LB.AddItem (dataArray(index, i))
Next i
End Sub
claro que resulta en un error de tipo de datos mis-emparejado. Intenté definir "controlName" como ListBox, pero tampoco funcionó ...
Aunque quizás sea mi referencia a listBox incorrecta. He visto maneras tantos para hacer referencia a un objeto de control ...
MSForms.ListBox.
ME.ListBox
Forms.Controls.
Worksheet.Shapes.
la lista sigue en una, y nada ha funcionado para mí.
Gracias. Modifiqué mi sub respuesta por justnS, y configuré mi variable (cMyListbox) como indicaste arriba, y la combinación funcionó. Gracias por la sugerencia sobre el llenado de la lista, también. – Symmitchry
No hay problema, me alegro de que funcionó para usted. – Reafidy