2017-07-10 2 views
0

Salut, je cherche de l'aide avec un problème VBA excel. J'ai créé un formulaire utilisateur qui vous permet de sélectionner parmi une liste d'éléments d'une liste à l'autre. Le code de la Userform est la suivante:Je souhaite passer une liste de données d'un formulaire utilisateur à un module?

Private Sub UserForm_Initialize() 
With ColumnName 
.AddItem "a" 
.AddItem "b" 
.AddItem "c" 
.AddItem "d" 
.AddItem "e" 
.AddItem "f" 
End With 
End Sub 

Puis

Private Sub AddButton_Click() 
For i = 0 To ColumnName.ListCount - 1 
If ColumnName.Selected(i) = True Then selectedColumns.AddItem 
ColumnName.List(i) 
Next i 

End Sub 

Où est listbox 1 NomColonne et Listbox 2 est sélectionné colonnes. J'ai essayé de transmettre cette liste d'informations à un module séparé par la première entrée de ce code:

Private Sub CommandButton1_Click() 
varSelectedColumns = UserForm2.selectedColumns 
Unload UserForm2 
End Sub 

ensuite dans le module que je veux utiliser ces données pour faire une chaîne si je

Public varSelectedColumns As String, srtQuery As String 
sub Skeleton_Query1() 

UserForm2.Show 

strQuery = "SEL * " & Chr(10) & varSelectedColumns 

Range("B2").Value = strQuery 
End Sub 

Répondre

0

Essayez ...

Private Sub CommandButton1_Click() 
    Dim i As Long 
    varSelectedColumns = "" 
    With UserForm2.selectedColumns 
     If .ListCount = 0 Then 
      Beep 
      Exit Sub 
     End If 
     For i = 0 To .ListCount - 1 
      varSelectedColumns = varSelectedColumns & ", " & .List(i) 
     Next i 
    End With 
    varSelectedColumns = Mid(varSelectedColumns, 3) 
    Unload UserForm2 
End Sub 

Bien que, depuis varSelectedColumns est assignée une chaîne, vous voudrez peut-être changer son nom à strSelectedColumns pour refléter son type de données.

+0

Merci beaucoup cela a parfaitement fonctionné –