• 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 starten als cel is waar

Status
Niet open voor verdere reacties.

NajKwin

Gebruiker
Lid geworden
24 dec 2015
Berichten
256
Hallo,

ik heb al even gezocht maar kom er niet echt uit.

Ik heb een sheet en ik wil een macro laten starten als een bepaalde celwaarde waar is.

Ik ben niet zo bedreven met VBA wie kan en wil mij er bij helpen ?

Groeten Naj,

p.s. Graag niet verwijzen naar ander posts Want zo als ik net al zei ben Ken de VBA codes niet en weet dus niet zo goed hoe het moet.
 
Met dit in de VBA sectie van het betreffende werkblad:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" And Target.Value = True Then
        'Je eigen code
    End If
End Sub

Het adres kan je uiteraard aanpassen naar de gewenste cel.
Er wordt nu gekeken naar de boolean waarde van de cel.
Als je bedoelt dat als als tekst het woord WAAR in de cel staat zal je dat er ook op moeten aanpassen.
Let er dan op dat dat hoofdletter gevoelig is.

De functie wordt gestart als een waarde van een willekeurige cel in het werkblad wordt gewijzigd.
Wil je een preciezer antwoord, plaats dan een voorbeeld document.
 
Laatst bewerkt:
Daar gebruik je precies hetzelfde voor.
 
ALs ik dat probeer gebeurt er niets :-(

Zie Bijlage

Als ik gewoon WAAR typ in cel a1 gebeurt er wel wat.

Doe ik dan iets verkeerd?
 
Laatst bewerkt:
Ja, je hebt niet gelezen wat ik vertelde over de tekst "WAAR" en de boolean waarde WAAR (True).
Je test nu op True terwijl in A1 de tekst "WAAR" staat.
Dat zijn 2 totaal verschillende dingen.
 
Laatst bewerkt:
Sorry maar ik ken geen VBA dus begrijp niet wat je bedoelt
 
Dat heeft niets met VBA van doen, dat is in iedere programeertaal hetzelfde.
Als je niet weet wat een Boolean waarde is kan ik me de verwarring wel voorstellen omdat de NL versie van Excel er de waarde WAAR voor gebruikt.

Wijzig dat stukje maar eens in dit:
Code:
If Target.Address = "$E$1" And Range("A1") = "WAAR" Then

En het advies om dit eens te bestuderen:
http://www.homeandlearn.org/excel_vba_logical_operators.html
 
Laatst bewerkt:
Hetzelfde geldt overigens voor ONWAAR (False) en "ONWAAR".
 
Hallo,

Nog even een vraagje?

Ben nog een beetje aan het stoeien geweest. op moment dat in cel e1 een 1 wordt in gevoerd loopt de macro goed.

Echter als er in e1 een formule staat dat het getal beoordeelt of de waarde even of oneven is.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$1" And Range("A1") = "WAAR" Then
'Je eigen code
End If
End Sub


a1 verandert in a2 en e1 verandert in e2

Op het moment dat ik in kolom G2 een 1 bijzet zodat e5 een even getal is verschijnt er in cel A2 "WAAR" Echter de macro wordt dan niet uitgevoerd. Wat doe ik hier niet goed

Bekijk bijlage test15122017.zip
 
G2 is dan niet Target.Address.
 
Heb het niet helemaal goed omschreven.

in kolom G wordt de lijst aangevuld waarna er met de formule in e2 ( =aantal.als) in e2 wordt gekeken of er in e2 een even of oneven getal staat. en in a2 weer word gekeken met =ALS(IS.EVEN(E2);"WAAR";"")

Wat formules betreft werkt het alleen het verhaal dan om de Macro aan te sturen klopt niet. Want deze wordt niet uitgevoerd :-(
 
Al je in G2 wat invult treedt de Private Sub Worksheet_Change(ByVal Target As Range) in werking.
Daarin staat niets m.b.t. G2 die op dat moment de Target is en wordt er dus verder niets gedaan.
 
Laatst bewerkt:
Kijk in het vette gedeelte dat je plaatste in #11. Dat is een zogenaamde Event (gebeurtenis) routine. De gebeurtenis is een wijziging in een cel. Die veroorzaakt het starten die routine. Die routine krijgt dan een parameter als object mee. Die parameter heet Target en de waarde is het range object waar de gebeurtenis plaats vond.

Als je dus cel G2 wijzigt is Target.Address $G$2 en daar doe je in de code niets mee, dus lijkt het of er niets gebeurt, terwijl die routine wel degelijk z'n werk heeft gedaan.

Zie ook:
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/worksheet-change-event-excel
 
Laatst bewerkt:
Je kan gewoon een eenvoudig Excel document plaatsen ipv van een .zip

Code:
=ISEVEN(E2)
zal ook wel een een 1 of 0 opleveren. "WAAR" tussen "" is een tekst en daar ben je vast niet naar opzoek.
 
Kijk in het vette gedeelte dat je plaatste in #11. Dat is een zogenaamde Event (gebeurtenis) routine. De gebeurtenis is een wijziging in een cel. Die veroorzaakt het starten die routine. Die routine krijgt dan een parameter als object mee. Die parameter heet Target en de waarde is het range object waar de gebeurtenis plaats vond.

Als je dus cel G2 wijzigt is Target.Address $G$2 en daar doe je in de code niets mee, dus lijkt het of er niets gebeurt, terwijl die routine wel degelijk z'n werk heeft gedaan.

Zie ook:
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/worksheet-change-event-excel


Ik denk dat ik het toch niet goed heb uit gelegd of ik snap het echt niet.

In kolom G word een waarde geplaatst. met de formule aantal.als word er gekeken hoe vaak die waarde voorkomt deze word weergegeven in Cel e2

in cel a2 word gekeken of de waarde in e2 even is.

Bij een WAAR in a2 moet de macro worden uitgevoerd.
 
Als je dus in kolom G een waarde intikt is die kolom/cel combinatie de Target in de event routine.
 
Als je dus in kolom G een waarde intikt is die kolom/cel combinatie de Target in de event routine.


Sorry ik ben het helemaal kwijt:-( is het mogelijk dat je hier de code neerzet wat ik nodig ben, want ik snap het helemaal niets meer.

Als ik nl in a1 de formule geef =als(e1=1;"WAAR";"") word de macro uit gevoerd echter als ik in a1 de formule =is.even(e1) gebeurt er niets zichtbaar.

Het enigste wat verandert in mijn optiek is de formule in A1
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan