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

Datum vandaag vastzetten

Status
Niet open voor verdere reacties.

Euro010

Gebruiker
Lid geworden
8 feb 2013
Berichten
29
Goedemorgen,

Ik zit met een probleem, waarvan ik de oplossingen geprobeerd heb te vinden op internet/dit forum. Ik kom er nog steeds niet uit.
Situatie:

Ik houd een logboek bij. Ik vul in kolom C een bepaalde tekst in en vul handmatig in kolom B de datum in.
Op een één of ander manier (macro/formule) moet het zo zijn, dat wanneer ik in kolom C een bepaalde tekst plaats dat er automatisch in kolom B op de zelfde rij de datum van vandaag komt te staan.
Nu kan je dat natuurlijk met de formule =als doen, dat wanneer er "iets" in kolom C staat er in kolom B =vandaag() komt te staan.
Maar open ik dit bestand morgen weer, dan staat er de datum van morgen.
Oftewel:

Hoe zet ik de datum van vandaag vast in kolom B, wanneer ik in kolom C tekst zet.
 
Als de CTRL toets tegelijkertijd met de ; (punt komma) niet voldoende is, dan kom je uit bij VBA.
Je kunt de onderstaande code achter het blad plakken.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C2:C10000")) Is Nothing Then
        Target.Offset(, -1).Value = Date
     End
    End If
End Sub
Succes,
 
Daar komt het op neer maar ik zou het iets anders doen om hem onafhankelijk te maken van het regelnummer:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
        If Range("B" & Target.Row) = "" Then
            Range("B" & Target.Row) = Format(Date, "dd-mm-yyyy")
        End If
    End If
End Sub

Moet de datum in B ook weer worden verwijderd als een cel in C leeg wordt gemaakt?
 
Laatst bewerkt:
Bedankt Thankyou en edmoor!

edmoor die van jou werkt voor mij het beste.
Echter, ik heb nog een aanvullende vraag.

In mijn excel zijn de volgende kolommen:

Kolom A: Naam
Kolom B: Datum melding
Kolom C: Notitie (oftewel tekst)
Kolom D: Datum melding gereed
Kolom E: Gereed of niet gereed (Doe ik middels gegevensvalidatie)

Met de VBA die edmoor stuurde krijg ik dus automatisch de datum in kolom B wanneer ik in C wat invul.
Nu wil ik hetzelfde bij kolom D, dus wanneer ik in kolom E Geerd of niet gereed aanklik dat dan de datum van gereed komt te staan (laat dit bijvoorbeeld 3 dagen later zijn)

Nu heb ik de code gekopieerd en in dezelfde map geplaatst en aangepast naar de kolommen D en E, maar nu krijg ik de melding Compileerfout: Er is een dubbelzinninge naam gevonden (Worksheet_Change)

Hoe los ik dit op??
 
Een naam van een functie of routine mag slechts eenmaal in een project of werkblad voor komen.
In dit geval gaat het om de routine Worksheet_Change.
Je zult het dus bijvoorbeeld met een Case conditie in diezelfde routine moeten doen.

Kijk welke kolom actief is en onderneem aan de hand daarvan actie.
Dus zoiets:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Column
        Case 3 'Actieve kolom = C
            Call KolomB("B", Target.Row)

        Case 5 'Actieve kolom = E
            Call KolomE("D", Target.Row)
    End Select
End Sub

Sub KolomB(kolom As String, regel As String)
    If Range(kolom & regel) = "" Then
        Range(kolom & regel) = Format(Date, "dd-mm-yyyy")
    End If
End Sub

Sub KolomE(kolom As String, regel As String)
    ' de code voor behandeling van Kolom E
End Sub

Dat kan allemaal nog mooier en ingewikkelder, maar dit zou goed te begrijpen moeten zijn.
 
Laatst bewerkt:
Thans hier heb ik wat aan!!

En stel, ik wil geen tekst in kolom C invullen zodat er in kolom B de datum komt, maar dat ik in kolom D wat wil invullen zodat in kolom B de datum kom.
Welke aanpassing moet ik dan doen in de code?
Ik heb zelf al wat lopen vogelen, maar ik kom er niet uit.
 
Dan breidt je hem dus uit voor de behandeling van kolom D die dan hetzelfde doet als wanneer kolom C actief is.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Column
        Case 3, 4 'Actieve kolom = C of D
            Call KolomB("B", Target.Row)

        Case 5 'Actieve kolom = E
            Call KolomE("D", Target.Row)
    End Select
End Sub

Sub KolomB(kolom As String, regel As String)
    If Range(kolom & regel) = "" Then
        Range(kolom & regel) = Format(Date, "dd-mm-yyyy")
    End If
End Sub

Sub KolomE(kolom As String, regel As String)
    ' de code voor behandeling van Kolom E
End Sub
 
Laatst bewerkt:
Dan wil ik offtopic nog even kwijt dat je 1 van de weinigen bent die het woord "echter" op de juiste wijze gebruikt! :thumb:
 
Laatst bewerkt:
Fantastisch edmoor, ik snap de code nu!
Het getal achter Case correspondeert met de kolom (1=A, 10=J, etc.)

Betreffende het gebruik van het woord "echter". Tsjah, ik heb gewoon opgelet tijdens de schooluurtjes haha.

Ik ga b.t.w. straks nog een vraag op dit forum zetten, die niet direct met deze huidige vraag te maken heeft.
Wellicht kan je hier ook antwoord op geven.
Ik sluit dit forum nu. Nogmaals bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan