Comment puis-je me réfère à un objet de contrôles, sur une feuille de calcul, à l'aide d'un nom de variable?

J'ai ajouté un contrôle ListBox à une FEUILLE (et non à un "UserForm")
Je l'ai fait à l'aide de la souris.
J'ai cliqué sur le petit Marteau et l'icône de la Clé.

Cette ListBox semble être facilement référencé à l'aide de code comme ceci:

ListBox1.Clear

ou

ListBox1.AddItem("An option")

Cependant, j'ai trois de ces zones de liste (nom, idéalement, ListBox1, ListBox2 et ListBox3) et je veux écrire une fonction pour les remplir avec des données du tableau, comme ceci:

Call populate_listbox(ListBox2, designAreaArray)

Où le premier argument est la zone de liste nom, le 2ème est les données.

Mais je ne sais pas comment envoyer "ListBox2" correctement, ou reportez-vous correctement à l'intérieur de la fonction.

Par exemple:

Dim controlName as string
controlName = "ListBox1"

ne fonctionne pas, même si je définis la fonction comme suit:

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

Clairement il en résulte un mal appariés erreur type de données. J'ai essayé de définir la "nomchamp" comme une zone de liste, mais cela ne fonctionne pas non plus...

Bien que peut-être c'est ma référence à la zone de liste qui est incorrect. J'ai vu TELLEMENT de façons de se référer à un objet de contrôle...

MSForms.ListBox.
ME.ListBox
Forms.Controls.
Worksheet.Shapes.

La liste va sur une, et rien n'a fonctionné pour moi.

OriginalL'auteur Supermitch | 2012-01-19