Comment puis-je supprimer par programme tous les éléments d'une liste déroulante dans VBA?
Malheureusement, vous devez supprimer chacun individuellement:
For i = 1 To ListBox1.ListCount
'Remove an item from the ListBox using ListBox1.RemoveItem
Next i
Mise à jour - Je ne sais pas pourquoi ma réponse n'incluait pas la solution complète:
For i = ListBox1.ListCount - 1 to 0 Step - 1
ListBox1.RemoveItem i
Next i
Code Psuedo à venir (mis à jour avec le code réel):
Do While ComboBox1.ListCount > 0
ComboBox1.RemoveItem (0)
Loop
En gros, lorsque vous avez des éléments, supprimez le premier élément de la liste déroulante. Une fois que tous les éléments ont été supprimés (compte = 0), votre boîte est vide.
Méthode 2: encore mieux
ComboBox1.Clear
Le moyen le plus simple:
Combobox1.RowSource = "" 'Clear the list
Combobox1.Clear 'Clear the selected text
Vous pouvez utiliser la méthode ControlFormat:
ComboBox1.ControlFormat.RemoveAllItems
Meilleur moyen:
Combobox1.items.clear();
Pour Access VBA, qui ne fournit pas de méthode .clear sur les listes déroulantes de formulaires utilisateur, cette solution fonctionne parfaitement pour moi:
If cbxCombobox.ListCount > 0 Then
For remloop = (cbxCombobox.ListCount - 1) To 0 Step -1
cbxCombobox.RemoveItem (remloop)
Next remloop
End If
Dans Access 2013, je viens de tester ceci:
While ComboBox1.ListCount > 0
ComboBox1.RemoveItem 0
Wend
Il est intéressant de noter que si vous définissez la liste des éléments dans Propriétés, celle-ci n'est pas perdue lorsque vous quittez le mode Formulaire et revenez en mode Création.