Vervolgkeuzelijst van de gebruikersformuliermodule

Hoi allemaal

Ik heb een userForm gemaakt in de vorm van een checklist met CheckBoxes om aan te vinken, ik wil het verplicht stellen om een van de vakjes van elke regel aan te vinken voordat ik toegang heb tot een combobox die de verschillende modules van de macro groepeert (elke module heeft een vba-code) dan wil ik een CommandButton toevoegen die de gekozen module zal starten. 

Ik weet dat het een puinhoop moet zijn voor de VBA-goden, ik ben geen programmeur en ik weet niet of het mogelijk is?

PS: De macro wordt gestart door een tekensoftware (Solidworks), daarom staat de checklist in het gebruikersformulier en niet in een excel sheet.

Bij voorbaat dank


test.jpg

Hallo

Hier is een voorbeeld dat mij lijkt te beantwoorden wat je wilt doen...

Goede code voor jou...

Vriendelijke groeten


macrouserform.swp
3 likes

Hallo Roger,

Bedankt voor je hulp, ik heb mijn userForm gewijzigd met je code voor de checklist die goed is, aan de andere kant in de vervolgkeuzelijst, ik had graag de lijst met de 4 onderstaande modules gehad (zie afbeelding test.jpg) en afhankelijk van de gekozen module, start de module-macro.

Ik hoop dat het mogelijk is. 

Bij voorbaat dank

Hallo

Probeer het als volgt:

    For i = 0 To Application.Modules.Count - 1
        MalistBox.AddItem Application.Modules(i).Name         
    Next i

 

1 like

Hallo

Bedankt, ik zal morgen kijken

Hallo

Ik heb de code getest door de macro van Roger te wijzigen, ik kan het niet doen

De vervolgkeuzelijst geeft de modules niet weer

 

Hallo

Aangezien de namen van uw 4 modules nooit veranderen, zou u deze moeten kunnen invullen zodra u de macro start en iets als dit kunnen plaatsen:

Private Sub UserForm_Activate()
   MonCombobox.AddItem ("Mon module 1")
   MonCombobox.AddItem ("Mon module 2")
   MonCombobox.AddItem ("Mon module 3")
   MonCombobox.AddItem ("Mon module 4")
End Sub

Natuurlijk vervangt u "MyCombobox" door de naam van uw besturing en de "Mijn module ... " door de naam van uw modules.

Vriendelijke groeten

2 likes

Hallo

En als je je modules echt op code wilt weergeven, moet je iets kunnen doen als:

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

Wees voorzichtig, vergeet niet om "Microsoft Visual Basic for Applications Extensibility" in Tools/References te zetten.

Vriendelijke groeten

3 likes

Dank je wel Roger,

Ik zal het overdag testen

Na een paar aanpassingen werkt de userform wel, het toont me alle modules in de drop-down lijst.

Klein probleempje zie bijgevoegd bestand:

1- Vanaf het begin is mijn vervolgkeuzelijst toegankelijk met de keuze uit modules, het zou beter zijn als deze grijs wordt weergegeven zolang de vakjes niet zijn aangevinkt

 2- De knop start de module die uit de vervolgkeuzelijst is gekozen niet 

Het gaat vooruit, het is goed 

Hartelijk dank


macrouserform_2.swp

Hallo

U kunt bijvoorbeeld doen zoals in de bijgevoegde macro, maar dit is slechts een voorbeeld, het is aan u om u aan te passen aan uw behoeften.

Vriendelijke groeten


macrouserform_3.swp
1 like

Hallo Roger,

Het werkt Ooooooh, je bent te sterk 

 Ik had een fout:( Fout 438" object verwerkt deze eigenschap of methode niet)

Om het te laten slagen, heb ik de . Regelwaarde:         Als TypeName(Ctrl) = "CheckBox" en Ctrl.Object.Value = "True", dan is Nee. = Nr. + 1

Ik ben zo gelukkig

Dank u, dank u, dank u zeer dat u de tijd voor mij hebt genomen.