• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro Keuzemenu in inputbox

Status
Niet open voor verdere reacties.

Oudholland

Gebruiker
Lid geworden
4 jun 2020
Berichten
24
Vanuit een databaseprogamma worden lijsten geëxporteerd, maar in een aantal 'smaakjes'. Grotendeels hetzelfde, maar dan een kolom meer of minder, en een andere kop/voettekst.
Daarvoor heb ik een serie macro's gemaakt om hierin o.a. de opmaak te regelen, per soort lijst een aparte macro.

Nu roep ik de macro aan met een aparte macro met inputbox (om zeker te zijn dat ik de juiste gebruik voor de juiste lijst)
Ik typ dus de naam van de uit te voeren macro in in de box.
Code:
Sub InputBox()

Dim Uitvoeren As String

Uitvoeren = Application.InputBox("Welke macro?", Title:="Uitvoeren")
Application.Run Uitvoeren

End Sub

Graag zou ik dit wijzigen in een keuzemenu. Is dit mogelijk (en zo ja hoe)?

Rob
 
Je zou een gegevensvalidatie kunnen gebruiken om vervolgens naar die cel te verwijzen in de macro. Zet het dan wel in een worksheet_change event.
 
Zelf zou ik er een userform voor maken met bijvoorbeeld een combobox, maar om bij je Inputbox te blijven kan je ook zoiets doen:
Code:
Sub mnu()
    Dim Uitvoeren As String
    Dim Soorten As String
    
    Soorten = Soorten & "Soort 1" & vbCrLf
    Soorten = Soorten & "Soort 2" & vbCrLf
    Soorten = Soorten & "Soort 3" & vbCrLf
    Soorten = Soorten & "Soort 4" & vbCrLf
    Soorten = Soorten & "Soort 5" & vbCrLf
    
    Uitvoeren = Application.InputBox(Soorten, Title:="Uitvoeren")
    If InStr(1, LCase(Soorten), LCase(Uitvoeren)) = 0 Then
        MsgBox "Onjuiste keuze"
        Exit Sub
    End If
    
    Application.Run Uitvoeren
End Sub
 
@Jveer, ik snap niet helemaal hoe je bedoelt. Zou je het iets uitgebreider kunnen uitleggen?

@Edmoor, zoiets zoals ik je code, maar dan zo dat de opties aanklikbaar zijn ipv dat ze overgetypt moeten worden :thumb:

Je had het verder over een userform. Kan dat in een apart xlsm-document geplaatst worden?
Ons databaseprogramma kan namelijk niet overweg met macro's in zijn templates, dus ik heb altijd een leeg .xlsm open met daarin de macro's zodat ik er toch bij kan. Of ik copy-paste even de complete code in het ge-exporteerde document. Maar wat ik lees van een userform is dat dat laatste niet zomaar gaat?

En ik ben onbekend met userforms, kan je me op weg helpen (of wijzen naar wat begrijpelijk leesvoer) om er een op te stellen en te koppelen aan een macro? Dan kan ik ook gaan testen wat er precies mogelijk is.
 
Laatst bewerkt:
Laatst bewerkt:
of zo ?
Code:
Private Sub lblSoort1_Click()
    MsgBox "Uw keuze = " & lblSoort1.Caption, vbOKOnly, "KEUZE"
End Sub
 
Dan kan je beter met een Class module werken en is er maar 1 Sub nodig voor alle keuzes ineens.
TS heeft een eenvoudig te volgen voorbeeld nodig en daarom heb ik dat niet gedaan.
 
@Edmoor, Zou je dit voor mij eens in een Class module willen verwerken. (HEb er nog steeds problemen mee.)
@Oudholland, sorry voor het inbreken op deze vraag.;)
 
@Edmoor, bedankt om het simpel te houden, je had goed ingeschat dat dat nodig was :D

Als ik nu ontleed hoe het is opgebouwd, kan ik het redelijk volgen. Maar of ik het zelf opnieuw opgebouwd krijg weet ik nog niet. Moet ik nog eens verder in gaan duiken.
Een simpele enkele knop met een macro is me al gelukt, maar een submenu zoals jij in je voorbeeld hebt staan, nog niet.

Formulieren en modules kan je eenvoudig exporteren en importeren
Ik heb (nog) geen idee hoe ik dat doe, zou je me daarmee op weg willen helpen?
Modules overzetten naar een ander bestand volgens mij wel (slepen van het ene naar het andere bestand in het projectvenster, toch? Of anders via export/import), maar hoe krijg ik het formulier dan mee?
 
Het formulier kun je op dezelfde manier slepen als de modules.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan