• 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's opstarten via keuzelijst

Status
Niet open voor verdere reacties.

lacabrli

Gebruiker
Lid geworden
7 nov 2009
Berichten
22
Hallo,

ik heb een vraag over het opstarten van macro's via een keuzelijst. Ik heb al gekeken en en van alles gelezen en geprobeerd maar ik krijg het niet werkend.

Ik werk met office 2007.

Ik wil het gaan gebruiken in een bestaand bestand wat heel groot en uitgebreid is met veel macro's (deze werken allemaal via buttons, maar ik wil het graag via een keuzelijst laten werken), als voorbeeld heb ik een bestandje bijgevoegd.De bedoeling is dat wanneer ik op blad 1 in cel a1 een keuze maak via de keuzelijst de bijbehorende macro wordt gestart.

Dus ik kies A, dan moet macro A actief worden.

Alvast bedankt voor het meedenken.

Gr lacabrli
 

Bijlagen

  • Voorbeeld.xlsm
    12,5 KB · Weergaven: 64
Plaats onderstaande code bij het werkblad in VBE.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target Range("A1")) Is Nothing Then .Run "Macro" & [a1].Value
End Sub

Met vriendelijke groet,


Roncancio
 
Hallo Roncancio,

ik krijg de melding "syntaxfout" zodra ik selecteer, moet ik nog iets aanpassen?

Gr Lacabrli
 
Er zat een foutje in de code.
Deze code werkt wel.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
    If Target <> "" Then Run "Macro" & [a1].Value
End If
End Sub

Met vriendelijke groet,


Roncancio
 
Hallo Roncancio,

het werkt, dank je wel.

Gr Lacabrli
 
Laatst bewerkt:
Vraagje op jullie vraag,
Ik zou graag ook zo marco in een keuzelijst willen verwerken ,als ik op een bepaalde naam klik,moet daarna een macro in werking worden gesteld!

gegevens staan op een datablad en verwerkt in een keuzelijst op blad 1.

Hoe moet ik de marco starten op een bepaalde plaats??

Gr Dorlando
 
De code die ik als antwoord gaf moet bij het werkblad staan.
Verder zal je de code wellicht aan moeten passen aan je eigen situatie.
- Je lijst staat wellicht in een andere cel.
- In onderstaande code wordt de macro "macro" & waarde van A1 gestart. Als de namen in de lijst overeenkomen met de namen van de macro's kan je "Macro" verwijderen.
Stel je lijst van namen van macro's staat in cel B1:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
    If Target <> "" Then Run [a1].Value
End If
End Sub

Met vriendelijke groet,


Roncancio
 
Als ik deze code gebruikt,waar moet ik mijn macro onder toevoegen?
En moet ik alleen mijn cel toevoegen van mijn keuzelijst?
Moet ik verder nog wat ondernemen?
Wat zegt deze code eindelijk?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
    If Target <> "" Then Run [a1].Value
End If
End Sub
 
Laatst bewerkt door een moderator:
Zoveel vragen...

1. Macro's in een of meerdere modules. Bijgevoegde code in ThisWorkbook.
2. Nee, maar in de code verwijzen naar de cel met de gegevensvalidatie.
3. Hangt er vanaf wat je wilt doen. De volgende zaken dien je wel te doen:

- code in ThisWorkbook plakken
- macro's maken en in een module plaatsen
- gegevensvalidatie maken met een lijst van de macro's

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
    If Target <> "" Then Run [B1].Value
End If
End Sub

4. De code wordt geactiveerd bij een wijziging van een cel. Is deze wijziging in cel B1 dan wordt de macro met die naam gestart.
Dus stel je hebt in cel B1 een gegevensvalidatie met de macronamen Begin, Midden en Eind.
De macro's staan al een module in VBE.
Zodra cel B1 gewijzigd wordt in Begin dan wordt macro Begin gestart.

Tijd overigens voor een nieuwe topic met een voorbeeldbestand.

Met vriendelijke groet,


Roncancio
 
Voorbeeld blad1:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Range("o5") = "Rotterdam Engineering" Then
Application.Run "Macro2"
End If

Voorbeeld thisworkbook
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Rotterdam Engineering")) Is Nothing Then
    If Target < o5 > "" Then Run [marco2].Value
End If
End Sub
 
Laatst bewerkt door een moderator:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect (Target, Range("O5")) is Nothing and Range("o5").Value = "Rotterdam Engineering" Then
Application.Run "Macro2"
End If

End Sub

Volgens mij is dit voldoende.

Met vriendelijke groet,


Roncancio
 
@bramheesterbeek Graag een eigen vraag maken. Het is niet toegetsaan in iemand anders zijn vraag jouw probleem aan de orde te stellen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan