Utworzyłem formularz użytkownika w postaci listy kontrolnej z CheckBoxami do zaznaczenia, chciałbym wprowadzić obowiązek zaznaczenia jednego z pól każdego wiersza przed uzyskaniem dostępu do listy rozwijanej grupującej różne moduły makra (każdy moduł ma kod vba), a następnie chcę dodać CommandButton, który uruchomi wybrany moduł.
Wiem, że to musi być bałagan dla bogów VBA, nie jestem programistą i nie wiem czy to możliwe?
PS: Makro jest uruchamiane przez oprogramowanie do rysowania (Solidworks), dlatego lista kontrolna znajduje się w formularzu użytkownika, a nie w arkuszu Excela.
Dziękuję za pomoc, zmieniłem mój userForm z Twoim kodem na listę kontrolną, która jest dobra, z drugiej strony na liście rozwijanej wolałbym listę 4 poniższych modułów (patrz obrazek test.jpg) i w zależności od wybranego modułu uruchom makro modułu.
A jeśli naprawdę chcesz wyświetlić listę swoich modułów według kodu, musisz być w stanie zrobić coś takiego:
Private Sub UserForm_Activate()
Dim vbProj As VBProject
Dim vbComp As VBComponent
Dim i As Integer
Dim maMacro As String
maMacro = "MacroUserForm" 'à remplacer par le nom de la macro
For Each vbProj In Application.VBE.VBProjects
i = 1
If vbProj.Name = maMacro Then
For Each vbComp In vbProj.VBComponents
If vbProj.VBComponents.Item(i).Type = 1 Then
ComboBox1.AddItem vbProj.VBComponents.Item(i).Name
End If
i = i + 1
Next
End If
Next
End Sub
Bądź ostrożny, nie zapomnij umieścić "Microsoft Visual Basic for Applications Extensibility" w Narzędzia/Referencje.