VBA Excel - Comment puis-je remplir les valeurs d'une zone de liste à partir d'une variable de gamme?
J'ai une liste de noms dans Une Colonne dans une feuille de calcul nommée "e-Mail"
Je veux remplir un userform zone de liste avec les noms de la Colonne A. Cependant, je ne peux pas spécifier une plage fixe cette liste est cultivé et psy. Alors, comment puis-je obtenir le formulaire pour remplir la liste avec le nombre correct d'articles?
C'est ce que je suis en train d'essayer, mais ne fonctionne pas (je suis sûr qu'il sera évident pour certaines personnes ici, pourquoi pas), j'ai aussi vu un autre exemple à l'aide d'une simple boucle For mais je suis incapable de trouver l'exemple de nouveau à vous montrer.
Private Sub UserForm_Initialize()
Dim rngName As Range
Dim rng1 As Range
Dim rng2 As Range
Dim ws As Worksheet
Set ws = Worksheets("Email")
Set rngName = ws.Range("A:A").Find(What:="*", LookAt:=xlWhole, MatchCase:=False, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
Set rng1 = ws.Range("A1")
On Error GoTo ErrorHandle
Me.lbUsed.List = Range(rng1 & ":" & rngName).Value
ErrorHandle:
End Sub
EDIT:
J'ai maintenant le code suivant mais il ne le travail, lorsque je charge le userform:
Private Sub UserForm_Initialize()
Dim rngName As Range
Dim rng1 As Range
Set rngName = Worksheets("Email").Range("A:A").Cells.Find(What:="*", LookAt:=xlWhole, MatchCase:=False, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
Set rng1 = Worksheets("Email").Range("A1:" & rngName.Address)
Me.lbUsed.List = Worksheets("Email").Range(rng1).Value
End Sub
Quelqu'un peut me pointer dans la bonne direction?
Vous devez vous connecter pour publier un commentaire.
Si vous voulez remplir votre zone de liste avec tous les éléments de la colonne A (en supposant qu'ils sont dans une gamme continue), vous pouvez le faire simplement en modifiant votre code comme ceci:
.End(xlDown)
est très peu fiable. Ce serait siA1
est vide? cela peut être intéressant: stackoverflow.com/questions/11169445/...continuous range
.Find
, comme dans l'OP code, a été beaucoup mieuxA1
. Donc, il indique la plage de A1 et vers le bas. Mais comme @simoco souligne à juste titre, cela ne fonctionne comme prévu sur une gamme continue.Point de la propriété RowSource (contenu) de la zone de liste dynamique de la Plage Nommée dans votre feuille de calcul. À mesure que vous ajoutez ou supprimez des éléments de la gamme, la liste sera automatiquement tirer de nouveaux éléments à la liste. Il n'y a pas besoin d'écrire de code en œuvre cette exigence.