[Excel] VBA meerdere macro's uitvoeren als cel verandert

Status
Niet open voor verdere reacties.

Muiter

Gebruiker
Lid geworden
11 jul 2008
Berichten
73
[Excel] VBA meerdere macro's uitvoeren als cel veranderd

Ik gebruik nu deze code om een macro uit te voeren als een cel veranderd
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$D$1" Then
    Application.Run "vernieuw_adres"
End If

End Sub
Hoe moet ik de code aanpassen om meerdere macro's af te spelen?
Dit werkt niet:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$D$1" Then
    Application.Run "vernieuw_adres"
    Application.Run "contactpersoon_vernieuwen"
End If

End Sub
Ook dit niet:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$D$1" Then
    Application.Run "vernieuw_adres"End If

If Target.Address = "$D$1" Then
    Application.Run "contactpersoon_vernieuwen"
End If

End Sub
Kan iemand mij verder helpen?
 
Laatst bewerkt:
Werkt het wel als je de macro's met Call xxxxx aanroept?
Ik gebruik zoiets om vanuit 1 macro een andere macro meerdere keren aan te roepen.

Bij run() geef je de controle over aan een ander proces.
Bij call() kom je terug....

Vermoeden. Ben geen absolute expert maar volgens mij is dit een belangrijk verschil.
 
Als de macro's zich in hetzelfde projekt (bestand) bevinden:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target = [D1] Then
    vernieuw_adres
    contactpersoon_vernieuwen
  End If
End Sub
 
Werkt het wel als je de macro's met Call xxxxx aanroept?
Ik gebruik zoiets om vanuit 1 macro een andere macro meerdere keren aan te roepen.

Bij run() geef je de controle over aan een ander proces.
Bij call() kom je terug....

Vermoeden. Ben geen absolute expert maar volgens mij is dit een belangrijk verschil.
Ik snap niet helemaal wat je bedoelt.

Als de macro's zich in hetzelfde projekt (bestand) bevinden:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target = [D1] Then
    vernieuw_adres
    contactpersoon_vernieuwen
  End If
End Sub
Werkt helaas ook niet.
 
Probeer dit eens:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$D$1" Then
    call vernieuw_adres
    call contactpersoon_vernieuwen
End If

End Sub

waarin vernieuw_adres dan een andere macro is, etc..
bij mij werkt dat.
 
Werkt helaas ook niet.

Verklaring:
de macro's vernieuw_adres en contactpersoon_vernieuwen bestaan niet.

Terzijde: de instructie Call is al sinds VBA 1998 overbodig (zie de help van de VBEditor)

PS. muiter@, kun je svp de taalfout uit de titel van je vraag halen ?
 
Laatst bewerkt:
Ik ben verder gaan zoeken en tot de ontdekking gekomen dat ik uiteindelijk wel beide macro's kan afspelen maar de 2e macro dan gegevens gebruikt die bij de eerste macro stonden voordat macro 1 die waarde veranderde.

Hoe kan ik dit oplossen?
 
optie 1. Tussenwaarde wegschrijven naar een cel die je niet gebruikt.
+punt = blijft staan ook bij model sluiten/heropenen
- punt = je moet een lege niet gebruikte cell benutten (tip: maak de tekstkleur gelijk aan de achtergrond kleur)

optie 2. Sla de tussen waarde in een global (maak in je VBA een global variabele aan)
Code:
public GLOBALE_VARIABELE as string
+punt = afgehandeld in de code
- punt = gegeven gaat verloren bij sluiten/heropenen werkboek

succes!
 
optie 1. Tussenwaarde wegschrijven naar een cel die je niet gebruikt.
+punt = blijft staan ook bij model sluiten/heropenen
- punt = je moet een lege niet gebruikte cell benutten (tip: maak de tekstkleur gelijk aan de achtergrond kleur)

optie 2. Sla de tussen waarde in een global (maak in je VBA een global variabele aan)
Code:
public GLOBALE_VARIABELE as string
+punt = afgehandeld in de code
- punt = gegeven gaat verloren bij sluiten/heropenen werkboek

succes!

Ik heb geen idee hoe ik met optie 2 moet omgaan en optie 1 geeft hetzelfde probleem.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan