• 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.

keuzelijst koppelen aan macro

Status
Niet open voor verdere reacties.

sickofitall

Gebruiker
Lid geworden
29 sep 2008
Berichten
375
Hoi

Is het mogelijk om de waarden in een keuzelijst te koppelen met een macro?

Bijvoorbeeld:
In mijn keuzelijst staat:
Allerlei
Hifi
Electro
Witgoed
....

Ik heb macro's met dezelfde benaming. Dus als ik 'Allerlei' kies, zou de macro 'Allerlei' uitgevoerd moeten worden. Is dat mogelijk in Excel (2002)?

dank!
 
Dat kan inderdaad, zoals ik nog niet zo lang zelf ook ontdekt heb.

Met het Run commando kan je een macro uitvoeren, die je bijvoorbeeld uit een cel kan halen.

Wigi
 
Hoi

Is het mogelijk om de waarden in een keuzelijst te koppelen met een macro?

Bijvoorbeeld:
In mijn keuzelijst staat:
Allerlei
Hifi
Electro
Witgoed
....

Ik heb macro's met dezelfde benaming. Dus als ik 'Allerlei' kies, zou de macro 'Allerlei' uitgevoerd moeten worden. Is dat mogelijk in Excel (2002)?

dank!

Denk het wel.
Onderstaande code wordt geactiveerd als er een wijziging plaatsvindt op het werkblad.
Indien die wijziging in cel A1 (de cel van de keuzelijst) is, dan wordt de bijbehorende macro gestart.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Target.Value <> "" Then
    Application.Run (Target.Value)
End If
End Sub

Met vriendelijke groet,


Roncancio
 
zie bijlage
 

Bijlagen

  • keuzelijst koppelen aan macro.xls
    32 KB · Weergaven: 790
Hmmm, sorry, ksnap er nie zoveel van :confused:

Bestandje bijgevoegd:
dus bijvoorbeeld; als ik links boven op Electro klik, zou de macro Electro moeten uitgevoerd worden; die heb ik erin gestoken onder Module 1.

Ik heb het geprobeerd maar ik snap niet zoveel van die target.value.

alvast bedankt voor de moeite!!!!
 

Bijlagen

  • help.xls
    59,5 KB · Weergaven: 264
Laatst bewerkt:
Ik had het als volgt in gedachte: (zie bijlage)

In cel A3 (groene cel) zit de keuzelijst.
Kies je in die cel voor Electro dan wordt de macro Electro gestart.

Met vriendelijke groet,


Roncancio
 

Bijlagen

  • help(1).xls
    61,5 KB · Weergaven: 410
Het is allemaal mogelijk, alleen niet met het type control dat je hebt gekozen.
Dergelijke formulieren-controls zijn shapes en triggeren daarom geen zgn. events.
Dit in tegenstelling tot Form-controls. Deze OLE-objecten doen dat wel. Hetzelfde geldt voor een werkblad-object. Ik raad je dan ook aan je te verdiepen in events.

De beste oplossing is denk ik mijn vorige bijlage als uitgangspunt te nemen. Deze gebruikt een 'reguliere' keuzelijst (menu;data;validatie;lijst). Wanneer je in deze lijst een andere waarde kiest gaat het change-event van het werkblad 'Gegevens' af waarna de juiste macro wordt uitgevoerd.

Succes!
 
Wil je per sé vasthouden aan je oorspronkelijke control, dan kan je onderstaande code gebruiken.

Code:
Sub Keuzelijst88_BijWijzigen()
Application.Run ActiveSheet.ListBoxes(Application.Caller).List(ActiveSheet.ListBoxes(Application.Caller).ListIndex)
End Sub

Met vriendelijke groet,


Roncancio
 
Werken met data->Valideren en dan deze keuzelijst gebruiken, dan krijg ik een fout 'typen komen niet met elkaar overeen'.

Ik zal jullie anders confronteren met mijn volledige probleemstelling :)

Zie .jpg:
Ik heb dus 3 draaitabellen. In rij 14 heb je dan mijn verschillende categorieën (Hier 'cel' genaamd). Ik wou dus eigenlijk een keuzelijst (met de categoriën) maken zodat je niet elke keer je een categorie wil zien, de 3 draaitabellen moet aanpassen, maar dus in feite maar 1 keer je categorie moet kiezen.

Misschien hebben jullie hiervoor een eenvoudigere oplossing?
Hopelijk is de .jpg een beetje duidelijk (ik heb onze zakencijfers wel verwijderd).


EDIT: foutmelding is al opgelost
 

Bijlagen

  • naamloos.jpg
    naamloos.jpg
    90,5 KB · Weergaven: 265
Laatst bewerkt:
Wil je per sé vasthouden aan je oorspronkelijke control, dan kan je onderstaande code gebruiken.

Code:
Sub Keuzelijst88_BijWijzigen()
Application.Run ActiveSheet.ListBoxes(Application.Caller).List(ActiveSheet.ListBoxes(Application.Caller).ListIndex)
End Sub

Met vriendelijke groet,


Roncancio

dit werkt niet. Ik krijg de foutmelding 'Eigenschap listboxes van klasse worksheet kan niet worden opgehaald.'

ik werk met excel 2002, ik weet niet of dit er toe doet.


EDIT:
Aan de geïnteresseerden: ik heb ondertussen een oplossing gevonden naar mijn wensen, mét keuzelijst.
Bij mijn keuzelijst heb ik 'besturingselement opmaken' de lijst gekoppeld aan cel "U7".

In mijn VBA heb ik in een nieuwe module:
Code:
Sub Vervolgkeuzelijst110_BijWijzigen()

Select Case Range("U7").Value

Case "Allerlei"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "Allerlei"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "Allerlei"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "Allerlei"
        
Case "Electro"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "Electro"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "Electro"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "Electro"

Case "Hifi"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = "Hifi"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = "Hifi"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = "Hifi"

Case "Loisirs"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "Loisirs"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "Loisirs"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "Loisirs"


Case "Meubelen"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "Meubelen"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "Meubelen"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "Meubelen"

Case "Witgoed"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "Witgoed"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "Witgoed"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "Witgoed"

Case "Alles"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "[Alle categorieën]"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "[Alle categorieën]"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "[Alle categorieën]"

End Select

End Sub

Geen idee of jullie dit interessant vinden, maar ik dacht; ik kan mijn oplossing maar eens posten.

groeten!;)
 
Laatst bewerkt:
In bijgevoegd bestand werkt het wel.
Zodra je een selectie maakt, zie je een bericht verschijnen met de naam van de selectie.
Verder niets.

Met vriendelijke groet,


Roncancio
 

Bijlagen

  • help(1).xls
    63,5 KB · Weergaven: 322
dit werkt niet. Ik krijg de foutmelding 'Eigenschap listboxes van klasse worksheet kan niet worden opgehaald.'

ik werk met excel 2002, ik weet niet of dit er toe doet.


EDIT:
Aan de geïnteresseerden: ik heb ondertussen een oplossing gevonden naar mijn wensen, mét keuzelijst.
Bij mijn keuzelijst heb ik 'besturingselement opmaken' de lijst gekoppeld aan cel "U7".

In mijn VBA heb ik in een nieuwe module:
Code:
Sub Vervolgkeuzelijst110_BijWijzigen()

Select Case Range("U7").Value

Case "Allerlei"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "Allerlei"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "Allerlei"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "Allerlei"
        
Case "Electro"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "Electro"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "Electro"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "Electro"

Case "Hifi"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = "Hifi"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = "Hifi"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = "Hifi"

Case "Loisirs"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "Loisirs"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "Loisirs"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "Loisirs"


Case "Meubelen"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "Meubelen"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "Meubelen"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "Meubelen"

Case "Witgoed"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "Witgoed"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "Witgoed"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "Witgoed"

Case "Alles"
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = _
        "[Alle categorieën]"
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = _
        "[Alle categorieën]"
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = _
        "[Alle categorieën]"

End Select

End Sub

Geen idee of jullie dit interessant vinden, maar ik dacht; ik kan mijn oplossing maar eens posten.

groeten!;)

Bedankt voor je bericht. Het is zeker interessant om te zien hoe je hebt opgelost.
Noem me eigenwijs maar ik denk wel dat de je code iets korter kan.

Code:
Sub Vervolgkeuzelijst110_BijWijzigen()
Dim sKeuze As String
    sKeuze = ActiveSheet.ListBoxes(Application.Caller).List(ActiveSheet.ListBoxes(Application.Caller).ListIndex)

    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Cel").CurrentPage = sKeuze
    ActiveSheet.PivotTables("Draaitabel4").PivotFields("Cel").CurrentPage = sKeuze
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Cel").CurrentPage = sKeuze

End Sub

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan