• 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 uitkomst van formule = 1

Status
Niet open voor verdere reacties.

SUVERMO

Gebruiker
Lid geworden
22 dec 2019
Berichten
481
Dag experten,

ik ben er al een paar dagen mee bezig, maar het lukt mij niet. Daarom graag uw hulp


Telkens als er in blad "Dieren_Bib" in kolom S in een oranje cel iets wordt ingevuld zou de macro "Niet_Meer_In_Bezit" uitgevoerd moeten worden.

Als er in een oranje cel in blad "Dieren_Bib" in kolom S iets wordt ingevuld is de waarde van de formule in "REKENEN!A65" is "TEL_C2" gelijk aan 1. Dus als "TEL_C2" = 1 dan de macro "Niet_Meer_In_Bezit" uitvoeren, anders niet.
 

Bijlagen

Dit achter het blad Dieren_Bib:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 15 Then
        If Range("TEL_C2") = 1 Then Niet_Meer_In_Bezit
    End If
End Sub
 
bedankt voor uw reactie

Bijgevoegd bestand is aangepast maar macro "Niet_Meer_In_Bezit" wordt niet uitgevoerd.
indien "If Target.Column = 19" dan een foutmelding ivm TEL_C2
kan U even testen aub?
 

Bijlagen

Hier heb je een bestand waar de macro Niet_Meer_In_Bezit wordt uitgevoerd als er in de S Kolom iets getypt wordt.

Ik heb er niet alle fouten uitgehaald. Dat was uiteraard ook niet de vraag.
Maar om de macro Niet_Meer_In_Bezit uit te voeren heb ik eerst 'On Error resume next' toegevoegd... zodat hij alle fouten negeert.
En vervolgens een MsgBox in het begin van je Niet_Meer_In_Bezit geplaatst, zodat je duidelijk merkt dat de code tot daar werkt.

De rest is aan jou. Let er bijvoorbeeld op dat je de Range al telkens goed zet

Dus Range("VoorbeeldGebied") is niet hetzelfde als VoorbeeldGebied.

succes ermee.
 

Bijlagen

het lukt nog niet helemaal

Voor blad5 (Dieren_Bib) heb ik
Private Sub Worksheet_Change(ByVal Target As Range)
Gewijzigd in
Private Sub xxxxxWorksheet_Change(ByVal Target As Range)
Wanneer er nu iets wordt ingevuld in een oranje cel, verandert de waarde van TEL_C2 ,en de macro “NietMeerInBezit” laat uitvoeren gebeurt dit zoals gewenst.
Als voor blad5 (Dieren_Bib)
Private Sub xxxxxWorksheet_Change(ByVal Target As Range)
Gewijzigd wordt in
Private Sub Worksheet_Change(ByVal Target As Range)
Wanneer er nu iets wordt ingevuld in een oranje cel, verandert de waarde van TEL_C2 niet, en wordt de macro “NietMeerInBezit” automatisch gestart. Dit geeft dan niet het gewenste resultaat. Als men goed kijkt ziet men TEL_C2 heel even verandert op het einde van macrouitvoering.
Heeft iemand een oplossing hiervoor?
 

Bijlagen

Private Sub xxxxxWorksheet_ ... is een slinkse manier om een bepaalde event niet meer te gebruiken in afwachting om die macro te deleten.
Die macro is maw. inactief, zal nooit aangeroepen worden.
Als ik dan de tekst lees en herlees, dan pas ik.
 
Laatst bewerkt:
mogelijk is het bij deze duidelijker

macro1 kopieert eerst de inhoud van de cel vermeld in TEL_1 naar de cel vermeld in TEL_2, daarna wordt de inhoud van de cel vermeld in TEL_1 verwijderd.

als in de blauwe cellen een andere waarde wordt geselecteerd verandert de waarde van TEL_3.
hoe kan men bekomen dat macro1 wordt uitgevoerd telkens als de waarde van TEL_3 verandert?
 

Bijlagen

Achter je werkblad

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("A2:B2, G2:H2")) Is Nothing And Target.Count = 1 Then
    TEL_1 = Range("TEL_1").Value
    TEL_2 = Range("TEL_2").Value
    Range(TEL_2) = Range(TEL_1).Value
    Range(TEL_1).ClearContents
  End If
End Sub
 
Laatst bewerkt:
JVeer bedankt voor uw oplossing, het werkt goed in dit bestand
morgen ga ik proberen dergelijke te gebruiken in het bestand van #5
 
Hallo JVeer
ik heb geprobeerd maar het lukt mij niet om het in bijgevoegd bestand te gebuiken
volgende code staat in blad "Dieren_Bib"
maar "Range(TEL_C3).ClearContents" wordt niet uitgevoerd, heeft U een oplossing?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'ALs hierboven "Worksheet_Change" wordt vervangen door "xxxxxWorksheet_Change"
'kan macro "NietMeerInBezit" geselekteerd worden om uit te voeren.
Unprot
On Error Resume Next
        If Target.Column = 19 Then
        If Range("TEL_C2").Value = 1 Then
TEL_C3 = Range("TEL_C3").Value
TEL_C4 = Range("TEL_C4").Value
Range(TEL_C4) = Range(TEL_C3).Value 'waarom wordt dit wel uitgevoerd bij "Worksheet_Change"
'MsgBox "TEL_C3=" & Range("TEL_C3").Value
Range(TEL_C3).ClearContents 'waarom wordt dit niet uitgevoerd bij "Worksheet_Change" en wel door macro "NietMeerInBezit"
Ga_naar_Dierenbibliotheek
    End If
    End If
End Sub
 

Bijlagen

Moet Range(TEL_C3).ClearContents niet zijn Range("TEL_C3").ClearContents
 
dit heeft geen effect, en als het wel zou zijn dan wordt de formule in TEL_C3 verwijderd, wat niet de bedoeling is.
 
Wat is het probleem dan? Probeer de vraag en het bestand te beperken tot de essentie. 7 modules met rare codes en 10 wekbladen met daarin ook code is niet echt een voorbeeld te noemen.
 
Hierbij aangepast bestand.
Rij 11 tem rij 19 en rij 21 tem rij 62 zijn voorzien van gegevensvalidatie, rij 20 dus niet.
Als in de oranje cel van rij 20 iets wordt ingevuld dan wordt de macro goed uitgevoerd, dit is goed zichtbaar doordat sommige cellen worden geselecteerd en van kleur veranderen. Na het invullen van andere oranje cellen loopt het fout. Is de oorzaak van deze fout de gegevensvalidatie? Heeft iemand een oplossing?

blad Dieren_Bib heeft volgende code

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Unprot
'On Error Resume Next
        If Target.Column = 19 Then
        If Range("TEL_C2").Value = 1 Then
TEL_C3 = Range("TEL_C3").Value
TEL_C4 = Range("TEL_C4").Value
Range(TEL_C4) = Range(TEL_C3).Value
Range(TEL_C3).ClearContents
MsgBox "Ga_naar_Dierenbibliotheek wordt gestart"

Ga_naar_Dierenbibliotheek
    End If
    End If
End Sub
 

Bijlagen

ik heb al een aantal keer gepoogd binnen te kijken in je hoofd, maar dat blijft voorlopig onmogelijk.
Op 1 of andere manier probeer je diergegevens op een heel gestructureerde manier van een hogere orde bij te houden.
Dat moet je dan op een manier doen die moeilijk te onderhouden en uit te leggen valt.

Ik zou beginnen met te leren hoe tabellen werken.
Dan ben je in 1 keer van al je moeilijke toestanden af.
In die tabel hou je al je data voor dat dier bij.
Dat zullen dan om te beginnen geboortedatum, beide ouders, geslacht, huidskleur, verkoopdatum, verkoopprijs, sterftedatum, en mogelijks nog enkele andere specifieke vaste data voor dat dier.
Dan mogelijks een andere tabel met naam van het dier, datum en gewicht.
Een andere tabel met naam van het vrouwelijke dier, datum van copulatie of inseminatie en naam van de rammelaar, worpdatum (aanvankelijk uitgerekend, dan effectief, ofwel in 2 kolommen)
Etc, etc, ...
Met een paar zulke tabellen en goeie stuurmacros kan je vervolgens alles doen.

Geen zo'n knoeiwerk zoals je nu aan het doen bent en waarin je vastloopt.
Kan je anders eens een stukje van de sluier oplichten, je gegevens zullen toch wel niet van die aard zijn dat ze persoonlijk zijn, dat je onder de wet van de privacy vallen.
 
tabellen heb ik nog nooit gebruikt, ook niet vroeger op het werk, heeft u voor mij voorbeelden om dat te leren begrijpen?
 
tja, dat is vermoedelijk maar een stap verwijderd van wat je nu hebt.
Het enig van belang is dat je een unieke sleutel hebt om ieder dier te identificeren.
VBA op tabellen, daar kan je ontiegelijk ver mee gaan, hier alvast een voorsmaakje. https://jkp-ads.com/Articles/Excel2007TablesVBANL.asp
Je ziet in enkele regels doe je alles.
Wat heb je vandaag op individueel dierniveau bijvoorbeeld al verzameld en waar staat dat in je werkmap ?
 
Hallo,
ik heb ondertussen ontdekt dat de oorzaak van het probleem waarschijnlijk te zoeken is bij de gegevensvalidatie.
Daarom hierbij 2 bestanden
"Zonder Gegevensvalidatie.xlsm" en "Met Gegevensvalidatie.xlsm"
"Zonder Gegevensvalidatie.xlsm" heeft geen gegevensvalidatie in het bereik S11:S72
"Met Gegevensvalidatie.xlsm" heeft gegevensvalidatie in het bereik S11:S72
Als er in cel S15 ? wordt ingevuld geeft dit een fout in "Met Gegevensvalidatie.xlsm", en geen fout in "Zonder Gegevensvalidatie.xlsm".
Hoe kan men bekomen dat er in "Met Gegevensvalidatie.xlsm" geen fout optreed.
Met de filter in kolom B is het mogelijk om een gelijkaardig resultaat te bekomen, maar de cellen met opdrachten in kolom AA zijn dan soms niet selecteerbaar omdat zij niet meer zichtbaar zijn.
 

Bijlagen

het blijft zoeken in een spaghetti.
Bovenin je verhaal staat er ergens "on error resume next", dan mag je de grootste kemel uitvinden, VBA blijft (meestal) doordraaien.
Als ik een vraagteken invul gebeurt er 2 keer hetzelfde, dus kan ik je probleem niet reconstrueren.
Dus gooi die "on error" er uit en maak dat je programma overal en altijd foutloos werkt, door logisch na te denken of netjes te anticiperen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan