VBA pour obtenir des valeurs d'une liste dans une feuille de calcul dans Excel
J'ai une listbox nommé ListBox1 sur la feuille Sheet1 d'un classeur excel.
À chaque fois que l'utilisateur sélectionne l'un des éléments dans la liste, j'ai besoin de copier son nom à une variable nommée strLB.
Donc, si j'ai Valeur1, Valeur2, Valeur3, Value4 et l'utilisateur sélectionne Valeur1 et Valeur3, j'ai besoin de mon strLB à sortir comme Valeur1,Valeur3. Assez simple.
J'ai essayé de faire ce que post hoc avec:
For i = 1 To ActiveSheet.ListBoxes("ListBox1").ListCount
If ActiveSheet.ListBoxes("ListBox1").Selected(i) Then strLB = strLB & etc.etc.
Next i
Mais c'est très lent (en fait, j'ai 15k valeurs dans ma listbox). C'est pourquoi j'ai besoin d'enregistrer la sélection en temps réel et non dans un cycle, après que l'utilisateur se fait de la saisie.
Bien sûr, je vais également besoin d'un moyen de vérifier si l'utilisateur a supprimé toute de la sélection précédente.
Espère que vous les gars peut vous aider!!
source d'informationauteur Bruder
Vous devez vous connecter pour publier un commentaire.
Malheureusement pour MSForms zone de liste en boucle par les éléments de la liste et le contrôle de leur propriété Sélectionnée est la seule façon. Cependant, voici une alternative. Je suis le stockage/la suppression de l'élément sélectionné dans une variable, vous pouvez le faire à une certaine distance de la cellule et de garder trace de celui-ci 🙂
HTH
Sid
Accepté la réponse ne coupe pas, car, si un utilisateur de sélectionner une ligne de la liste n'est pas mis à jour en conséquence.
Voici ce que je propose à la place:
Courtoisie de http://www.ozgrid.com/VBA/multi-select-listbox.htm
Pour obtenir la valeur de l'élément sélectionné d'une zone de liste puis utilisez la commande suivante.
Pour Seule Colonne ListBox:
ListBox1.List(ListBox1.ListIndex)
Pour Le Multi Colonne ListBox:
ListBox1.Column(column_number, ListBox1.ListIndex)
Cela évite de boucle et est extrêmement plus efficace.