• 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 starten afhankelijk van celwaarde

Status
Niet open voor verdere reacties.

youdeni

Gebruiker
Lid geworden
28 feb 2008
Berichten
147
Allen,

Ik heb de volgende vraag. Ik wil afhankelijk van de waarde in cel A1 dat een macro wordt gestart. Als de waarde in cel A1 1 is dan moet macro 1 worden gestart. Als de waarde in cel A1 2 is dan moet macro 2 worden gestart. Als de waarde in cel A1 3 is dan moet macro 3 worden gestart. enz. De waarde van cel A1 wordt bepaald door een formule. Ik heb al gezocht op dit forum maar een optie met meerdere macro's was ik niet tegen gekomen.

Al vast bedankt!!
 
Beste youdeni ;)

Met deze macro in ThisWorkbook plaatsen.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [A1] = 1 Then

"Uw opdracht hier invullen"

End If
If  [A1] = 2 Then

"Uw opdracht hier invullen"

End If
End Sub

Of werken met If Case

Groetjes Danny. :thumb:
 
Laatst bewerkt:
opzicht net oplossing maar ik denk dat je gelijk beter kan werken met else if zo dat houd je code meer leesbaar
 
Bedankt voor de snelle reactie. Ik heb nu wel een aanvullende vraag/probleem. Ik heb de volgende macro gemaakt.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [A1] = 2 Then
Application.Run "test.xls!Macro1"
Else
End If
If [A1] = 3 Then
Application.Run "test.xls!Macro2"
End If
If [A1] = 4 Then
Application.Run "test.xls!Macro3"
End If
End Sub

Echter nu blijft ie als het ware hangen. In het voorbeeld bestand zie je wat ik bedoel. Als macro 1 wordt gestart, blijft het gearceerde vak geslecteerd en kan je niks anders doen. Wat doe ik verkeerd???
 

Bijlagen

  • test.xls
    30 KB · Weergaven: 123
Beste youdeni ;)

Zo:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If [A1] = 2 Then
    Macro1
End If

If [A1] = 3 Then
    Macro2
End If

If [A1] = 4 Then
    Macro3
End If

End Sub

Groetjes Danny. :thumb:
 
Beste Danny,

Ik heb jouw code gebruikt maar nog steeds blijft ie de selectie vasthouden.:confused:
Kan dat komen omdat de macro steeds opnieuw kijkt naar cel A1??
Hoe los ik dit op?

BvD
 
hoi

je gebruikt
Worksheet_SelectionChange()

probeer het eens met Change()

groet
sylvester
 
youdeni,
je gooit in je vraag 2 zaken door elkaar.
Bij wijziging van a1 moet het er het een en ander gebeuren, maar het is van belang HOE die wijziging gebeurt. Omdat je in je blad een keuzeknop hebt geplaatst, moet worden aangenomen dat je die wijziging via die keuzeknop wil laten plaatsvinden. Dan moet je dus geen macr gebruiken die via een worksheetevent werkt (de macro's hierboven), maar een gewone macro in een module.
En verder: aan je macro's 1 t/m 3 heb ik niets gewijzigd, maar als je bewerkingen op cellen wil uitvoeren, dan is het niet nodig om die cellen eerst te selecteren. Zie om jouw macro's te laten werken mijn bijlage.
 
Thanx Zapatr!!! Dit lijkt het te gaan doen!!

:thumb::thumb::thumb:
 
hoi youdeni

wat ik bedoelde met
probeer het eens met Change()

is dit: zie bijlage

als de waarde in A1 veranderd wordt een macro gestart afhankelijk van de inhoud van A1

groet sylvester
 
wat ik bedoelde is dit: zie bijlage
als de waarde in A1 veranderd wordt een macro gestart afhankelijk van de inhoud van A1
Ja sylvester, dat was wel duidelijk.
Maar dan moet je natuurlijk wel die keuzeknop weghalen;
het is het één (met keuzeknop) of het ander (zonder knop), zoals ik hierboven al schreef.
En omdat de vragensteller een keuzeknop had geplaatst, ging ik er vanuit dat hij die wilde gebruiken.
Overigens is het helemaal niet nodig om daar afzonderlijke macro's voor te maken, het kan allemaal eenvoudig in 1 macro.
En waarschijnlijk is het ook nog zo dat er (afhankelijk van de waarde van A1) slechts 1 bereik gekleurd moet worden, nl. dát bereik dat hoort bij de waarde in A1. De opvulkleur van de bereiken die horen bij de andere mogelijke waarden van A1 zullen dan gewist moeten worden. Dat is echter slechts een veronderstelling van mij, want de vragensteller heeft zich daarover niet uitgelaten. Maar moest mijn veronderstelling juist zijn, dan is dat in de macro('s) allemaal eenvoudig toe te voegen.
 
hoi zapatr

nu worden de macro's gestart als A1 wijzigt en via de "macro keuze knop" deze hoeft dus niet verwijdert te worden

groet sylvester
 
Youdeni, gebruik objecten uit de werkset besturingselementen ipv formulierobjecten. Deze zijn veel makkelijker aan te sturen en bieden veel meer mogelijkheden. In het objectchange-event kan je dan alles onderbrengen in 1 gestroomlijnde macro zoals Zapatr al aangaf ipv 3X dezelfde macro in een module. Je VBA-project zal er vele malen professioneler uitzien
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan