remplir combobox en VBA avec les éléments du tableau
J'ai une procédure VBA (Excel 2007) où j'aspire à définir la propriété ListFillRange d'une zone de liste déroulante de style que d'une liste à l'aide d'un tableau.
Je sais que cela fonctionne si je clic droit sur la zone de liste déroulante et écrire "Feuil1!$F2:$F17" à côté de "ListFillRange de la propriété". Je peux aussi faire cela dans le code. Cependant, je suis intéressé par la définition dynamique de la valeur de cette propriété par l'affectation d'un tableau.
Je sais pour sûr que le tableau fonctionne comme je l'ai testé, il n'y a probablement une erreur de syntaxe ici:
ThisWorkbook.Worksheets("Sheet1").OLEObjects("cmbS").ListFillRange = ar
lorsque je fais ceci, j'obtiens:
"Erreur" incompatibilité de Type.
Le résultat de cette action devrait être que le composant est remplie avec les éléments du tableau, à partir de l'élément(0) ... le dernier élément (n-1) de la matrice. Tous les pointeurs, je vous remercie beaucoup!
J'ai aussi essayé:
ThisWorkbook.Worksheets("Sheet1").cmbS.list = ar
et il dit "permission denied"
Voici la liste déroulante propriétés dans les cas où il permet de:
Après le test et l'essai, j'ai trouvé cela fonctionne:
ThisWorkbook.Worksheets("Sheet1").cmbS.ListFillRange = ""
Dim i As Integer
For i = LBound(ar) To UBound(ar)
ThisWorkbook.Worksheets("Sheet1").cmbS.AddItem (ar(i))
Next
Cependant, je suis intéressé par le remplissage avec toutes les valeurs à la fois pour un effet plus rapide, pas seulement l'ajout de l'élément par élément.
- si c'est lent toujours écran de configuration de la mise à jour à faux avant à l'aide de additem.
Vous devez vous connecter pour publier un commentaire.
Je sais que sa fin, mais peut-être que ça va aider quelqu'un d'autre. Au moins le code suivant fonctionne (beaucoup plus rapide que l'élément par élément) pour moi.
La seule façon vous pouvez remplir un combobox avec le contenu d'un tableau est de le faire élément par élément. J'ai du mal à croire qu'il serait notamment un processus lent, peu importe comment grand votre tableau est.
.List
de la propriété. Cela fonctionne dans les deux zones de liste modifiables et zones de liste, par exempleMyComboBox.List = My2DArray