• 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.

Hoe in meerdere rijen de datum vastzetten?

Status
Niet open voor verdere reacties.

snookie

Gebruiker
Lid geworden
16 apr 2001
Berichten
123
Wie kan voor onderstaande een oplossing bieden.

Probleemstelling: Indien in een cel (bv N17) er niks staat dient in de cel er rechts van (O17)ook niks te komen;
Indien er in de cel N17 een ja of nee komt te staan (dmv pull-down ja/nee) dan dient er een datum te komen in cel O17. Dit gebeurt dmv formule =IF(N17="";"";Vandaag) waarbij vandaag (celbenaming) met de formule =TODAY() in cel buiten de werkzone staat.
Nu eens deze datum in de cel staat mag deze niet meer wijzigen indien dit bv enkele dagen later het bestand heropend zal worden. Moeilijkheid is hier dat dit dient toegepast over een groot bereik van rijen. Ook indien ja/nee gewist word in cel N17 dient de datumplaatsing terug mogelijk te zijin.
'k Weet het, niet simpel maar met al die cracks hier durf ik te stellen dat er wel feedback zal komen. Alvast bedankt op voorhand :thumb:

mvg,
Snookie
 
Hallo snookie,

Op dit moment heb ik niet de tijd om iets uit te werken maar wil toch een suggestie doen.

Met VBA is het mogelijk een code "onchange" te starten in een sheet. Die code kan de datum er hard in zetten. Ipv de gelinkte versie zoals jij hem met een formule in je vraag noemt.

Misschien dat je hier al voldoende aan hebt. Anders lees ik het later. Succes.

Groet,
Hunac
 
Zoiets als in de bijlage?
 

Bijlagen

Beste Hunac,

Heb ondertussen na heel diep Googelen en wat puzzelen zelf een oplossing gevonden.

Gewoon in VBA een functie aanmaken in een module:

Function VASTMOMENT()
VASTMOMENT = Date
End Function


Functie wordt aangeroepen in de cel(len) door onderstaand formule:

=IF(N17="";"";VASTMOMENT())

Normaal gezien moet de datum nu blijven staan en kan de datum wissen en later herbruiken voor een nieuwe datum. Moet wel nog uitvoerig testen.

Alvast bedankt voor uw antwoord.


Ook HSV bedankt,is ook een oplossing maar ik kan, denk ik, niet terugkeren = wissen en laters opnieuw gebruik maken van de formule. Toch bedankt voor uw moeite.

:thumb::thumb::thumb:

Mvg,
Snookie
 
Dan voeg je de rode regel in de code toe.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("N17:N100")) Is Nothing Then
  Select Case Target.Value
         Case Is = "ja", "nee", "JA", "NEE"
         Target.Offset(0, 1).Value = Date
    End Select
   [COLOR="Red"] If Target.Value = "" Then Target.Offset(0, 1).Clear[/COLOR]
End If

End Sub

Geen formule in je werkblad nodig.
Maar als het opgelost is :thumb:
 
Laatst bewerkt:
@ Harry
Giet het in 1 Select Case
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("N17:N100")) Is Nothing Then
    Select Case Target.Value
        Case Is = "ja", "nee", "JA", "NEE"
            Target.Offset(, 1).Value = Date
        Case Is = ""
            Target.Offset(, 1).Value = ""
    End Select
End If
End Sub
Wees ook bedacht op het gebruik van Clear. Deze wist alles (waarden, opmaak, enz)
Wil je enkel waarden wissen gebruik dan ClearContents.
 
Is nog niet opgelost met enkel de functie.
de formule in de cel [=IF(N17="";"";VASTMOMENT()) ]zorgt er dus nog voor dat de datum mee veranderd.
Ik ga vanavond de code toepassen zoals HSV en Warm bakkertje voorstellen.
Alvast bedankt voor de inbreng. :thumb:
mvg,
Snookie
 
@ Harry
Giet het in 1 Select Case
Wees ook bedacht op het gebruik van Clear. Deze wist alles (waarden, opmaak, enz)
Wil je enkel waarden wissen gebruik dan ClearContents.

Oké Rudi, dank je voor de verbetering en info.
Ik spijker mooi een beetje bij zo. :thumb:
 
@ Harry
Giet het in 1 Select Case
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("N17:N100")) Is Nothing Then
    Select Case Target.Value
        Case Is = "ja", "nee", "JA", "NEE"
            Target.Offset(, 1).Value = Date
        Case Is = ""
            Target.Offset(, 1).Value = ""
    End Select
End If
End Sub
Wees ook bedacht op het gebruik van Clear. Deze wist alles (waarden, opmaak, enz)
Wil je enkel waarden wissen gebruik dan ClearContents.

@ Warme Bakkertje.

Hartelijk dank voor uw inbreng.
Er is enkel nog één probleemje, excel kent wel de datum van de cel rechts van target, dat maak ik uit aan een cel wat verderop in de rij met voorwaardelijke opmaak, maar hij toont de datum niet. M.a.w. code werkt maar ik cel rechts van de target dient nog een coderegel om de datum in de cel te schrijven.
Is er een oplossing voor deze?

Alvast bedankt ;)
Snookie
 
Bij mij werkt het perfect Snookie,

Misschien is het handig als je je bestandje hier neerzet zonder gevoelige info.
 
Bij mij werkt het perfect Snookie,

Misschien is het handig als je je bestandje hier neerzet zonder gevoelige info.

Hier een fragment.
In kolom N selecteer je ja/nee
In kolom O moet automatisch de datum van keurze ja/nee komen en mag niet wijzigen
Kolom Q is met voorwaardelijke opmaak tov andere (berkende datum)

Probleem is dus dat de datum niet zichtbaar komt in de O kolom

Wat is hier aan de hand?
Alvast bedankt voor reactie ;)
 

Bijlagen

Verander als hieronder.

If Not Intersect(Target, Range("N7:N100")) Is Nothing Then

Zet de code achter het blad, en niet in een module.
 
@ HSV

:o had juiste range uit het oog verloren :o
Heb ook de code achter sheet geplaatst (wat is het verschil tov module?)

Alles werkt nu volgens wens, enkel afwachten of datums morgen niet gewijzigd zijn.
Ik laat het nog weten.

1000x bedankt om tot deze oplossing te komen :thumb:

greetz
Snookie
 
of:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("N7:N100")) Is Nothing Then
    if instr("janee",lcase(target))>0 then target.offset(,1)=date
    if target="" then target.offset(,1)=""
  End If
End Sub
 
of:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("N7:N100")) Is Nothing Then
    if instr("janee",lcase(target))>0 then target.offset(,1)=date
    if target="" then target.offset(,1)=""
  End If
End Sub

De man van de korte codes. :D
Ik sla hem even op @snb, en kijken of ik "instr" & "lcase" kan vinden in de Help.
Je schrijft altijd "gebruik geen code die je niet begrijpt", dus vandaar de iets langere versie.
Bvd.
 
Okay, de datums wijzigen niet meer.
Dankzij HelpMij en vooral voor de mensen die mij de juiste codes bezorgden is dit bizarre stukje in orde gekomen. Veel dank hiervoor.
:thumb::thumb:

groeten,
Snookie;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan