Excel De Zone De Liste Déroulante Actualisation De La Liste Déroulante?
Est-il un moyen de rafraîchir une zone de liste déroulante?
J'ai le code VBA suivant. La liste déroulante est rempli, jusqu'à ce que l'instruction Si la liste est vide et remplie avec les éléments appariés.
À ce stade, la liste déroulante n'affiche qu'un seul élément avec une barre de défilement. Mais Si je ferme le menu déroulant et de la rouvrir, il est entièrement rempli correctement.
Private Sub ComboBox_SiteName_Change()
ComboBox_SiteName.DropDown
Dim v As Variant, i As Long
With Me.ComboBox_SiteName
.Value = UCase(.Value)
If .Value <> "" And .ListIndex = -1 Then
v = Worksheets("Address").Range("Table5[[#All],[SITE NAME]]").Value
.Clear ' Clear all items
' Repopulate with matched items
For i = LBound(v, 1) To UBound(v, 1)
If LCase(v(i, 1)) Like "*" & LCase(.Value) & "*" Then
.AddItem v(i, 1)
End If
Next i
Else
' Repopulate with all items
.List = Worksheets("Address").Range("Table5[[#All],[SITE NAME]]").Value
End If
End With
End Sub
La ComboBox_Change fonction est appelée, comme les types d'utilisateur dans la liste déroulante.. la liste déroulante de la boîte se transforme à partir d'une liste en une seule ligne avec les flèches Haut/Bas après les Clairs et les remplir de nouveau appariés éléments..
mais si je ferme la liste déroulante de la partie et rouvrir la liste de tous les articles sans les flèches Haut/Bas.
L' .ListRows valeur = 8 par la voie.
Je voudrais un moyen de la liste déroulante potion de fermer et de rouvrir.. ou une fonction VBA pour actualiser la liste déroulante de la partie, Sans boutons externes ou des contrôles Veuillez
Comment est Table5 structuré et qu'est-ce que les données?
Essayé événement "KeyDown" mais pas de changement en question. Table5 ont des en-Têtes et les données sont pour la plupart des Numéros ou des Général des Chaînes de caractères. Par exemple, le NOM du SITE serait "JOLLY RD", "ST. JOHNS", "US23 & JOHNSON", "ST. JOHNS NORD". Comme les types d'utilisateurs de "JO" de la liste déroulante des listes de tout et sélectionne JOLLY RD, mais dès qu'ils type "JOH" de la liste déroulante devient une entrée de haut avec de Défilement avec le SAINT. JOHNS sites.
Je voudrais utiliser VBA pour trier/filtrer une zone de liste déroulante sur un Userform afin qu'il fonctionne de la même manière une Tête de Filtre déroulant fonctionne sur la feuille de calcul. Par exemple, je voudrais que les éléments de filtre en tant que l'utilisateur tape. Que l'utilisateur tape "ST" par exemple, les seuls éléments dans la liste comprendrait "ST" même si l'un des éléments a été "rue PRINCIPALE", ou "l'ÉTAT" ou "PREMIER AVE"
OriginalL'auteur Chris Young | 2015-07-27
Vous devez vous connecter pour publier un commentaire.
Obtenir la liste pour afficher UNIQUEMENT les valeurs qui correspondent au texte tapé par l'utilisateur jusqu'à présent, a été un cauchemar. Ci-dessous est ce que j'ai écrit qui fonctionne (mais il m'a fallu du temps!)
Noter que le MacthEntry Propriété de la boîte combo DOIT être réglé sur "2 - frmMatchEntryNone" pour que le code fonctionne. (Autres valeurs de la liste déroulante .la valeur de la propriété de stocker le texte de la première valeur qui correspond à ce que l'utilisateur a tapé, et le code s'appuie sur elle de stocker ce qu'ils ont saisies.)
Noter également, l'astuce pour contourner le comportement que vous avez observé, c'est à dire les zones de liste déroulante liste de valeurs n'étant pas correctement dimensionnée, était d'utiliser les lignes de code:
Aussi, le code de ramasser tous les éléments de la liste qui ont les lettres tapées par l'utilisateur n'importe où dans leur texte.
De toute façon, voici mon code:
======================================================================
Vous pouvez: Remplacer tout le code avec ce qui devrait donner fonctionnalité acceptable (la plus longue de la source de données est dans l'ordre alphabétique), et c'est facile! Toutefois, il n'est pas tout à fait faire ce que tu voulais.
Les zones de liste déroulante peut être mis en place pour "filtrer que l'utilisateur tape" - tant que les données sont dans l'ordre alphabétique.
======================================================================
Remarque que dans votre code les deux lignes suivantes à cause de la ComboBox_SiteName_Change événement à recommencer. Je soupçonne que vous avez besoin d'ajouter des points de rupture et de déboguer votre code plus.
De toute façon, j'espère que ce travail est fait.
ce sera mon premier bounty si je l'obtiens, de sorte s'il vous plaît laissez-moi savoir si vous avez besoin de plus d'aide. (Je pense que c'est peut être une valeur de plus de 50 points)
Harvey
================================================
PARTIE 2:
De vous répondre dans un commentaire questions:
(Voir le n ° 2 de la balise dans mon code ci-dessus)
De se référer à un tableau de données de la colonne, à l'exclusion de l'en-tête d'utilisation:
=Table5[NOM du SITE]
(Ce sera généré automatiquement lors de la saisie d'une formule si vous cliquez et faites glisser sur les cellules de données dans une colonne).
Le code a été modifié accordlingly.
J'ai utilisé excel 2013 et 2010 et a conclu que l' .Activer événement fonctionne dans les deux.
Voir #3 pour un changement mineur.
Veuillez recopier tout le code.
remarque que j'ai introduit le code pour essayer et arrêter de scintillement à l'aide de l'Application.ScreenUpdating, mais il n';t ont aucun effet - je ne sais pas pourquoi. J'ai laissé le code de sorte que vous pouvez faire d'autres expériences si vous en avez besoin.
NOTE de la nouvelle procédure ComboBox_SiteName_KeyDown
================================================
PARTIE 3:
De vous répondre dans un commentaire questions:
C'est un combo sur un formulaire ! - afin de faire le changement avec tagged #4 ci-dessus.
Harvey
J'utilise Excel 2010 par la façon, peut-être que l'activation a été introduit en 2013, ou quelque chose?
Voir la PARTIE 2 dans ma réponse. Elle fonctionne avec mon 2010. Je ne comprends pas pourquoi ton code ne fonctionne pas. Le code fonctionne avec un non alhpabetical liste, mais personnellement, je pense que l'expérience utilisateur sera mieux si elles sont alphabétique. comment avez-vous créez le contrôle? Utilisez-vous un ActiveX contrôle zone de liste modifiable, créé à l'aide de ruban>Développeur>Réglages>Insérer ? (c'est à dire lors de l'ajout à l'aide de VBA/macro enregistrement vous voir ActiveSheet.OLEObjects.Ajouter(ClassType:="Forms.Zone de liste déroulante.1"....
L'activer échoue encore, je suis l'aide de cette zone de liste déroulante sur un UserForm. Ce n'est pas un contrôle ActiveX sur une feuille de calcul. J'apprécie vraiment votre aide avec ce
Voir la PARTIE 3: en réponse - j'ai fini je crois!
OriginalL'auteur HarveyFrench
Essayez de changer la commande de Changement de DropButtonClick
Cette actualise la liste cliquez sur la liste déroulante
OriginalL'auteur Pilchy