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

automatische tijdsmelding moet vastgezet worden na invullen

Status
Niet open voor verdere reacties.

LucybW

Gebruiker
Lid geworden
8 jun 2012
Berichten
9
Beste allen,

Ik hoop dat jullie mij kunnen helpen.

Ik heb in excel de formule ingevoerd:

=als(isleegB5);"";nu())

Als ik dan inderdaad in B5 een waarde invul, wordt in c5 het tijdstip inclusief secondes gevuld.
Echter als ik de formule doortrek naar B6, B7 et cetera en ik vul bij b6 een waarde in dan wordt ook het tijdstip in c5 aangepast.
Dat laatste wil ik dus niet hebben.
Hoe kan ik na het invullen van cel C5 er voor zorgen dat deze direct vastgezet wordt en niet wordt meeveranderd aan het nieuwe tijdstip.

Een andere oplossing had ik gevonden in de toetsencombinatie: ctrl / shift en : maar dan krijg ik de tijd alleen in minuten, terwijl ik absoluut secondes nodig heb.

Wie kan mij helpen?

Alvast bedankt,
Lucy
 
Hier een eenvoudige code om dat te doen:

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Sheets(1)
For i = 1 To 40
    If IsDate(.Cells(i, 3)) = True Then
        .Cells(i, 3).Copy
        .Cells(i, 3).PasteSpecial Paste:=xlPasteValues
    End If
Next
Application.CutCopyMode = False
End With
End Sub

Het bereik kan/moet nog aangepast worden.

Je kan de code ook direct in het werkblad zetten dan wordt de datum/tijd ogenblikkelijk vastgezet:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
    If IsDate(Target.Offset(, 1)) = True Then
        Target.Offset(, 1).Copy
        Target.Offset(, 1).PasteSpecial Paste:=xlPasteValues
    End If
Application.CutCopyMode = False
End Sub
 
Laatst bewerkt:
Is dit niet eenvoudiger ?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   if target.column=2 then target=target.value
End Sub
 
beetje blond, maar hoe zet ik de code in het werkblad? oh ja, bij mij is alles in het nederlands? pakt hij dan wel de code?
 
Laatst bewerkt door een moderator:
Kopieër de code, rechtsklik op de betreffende bladtab en selecteer Programmacode weergeven. Plak de code in het venster rechts.
 
Rudi,
Ik begin toch wel door te krijgen dat ik blond ben, want wat jij schrijft begrijp ik en doe ik volgens mij ook.
Echter wat ik wil gaat nog steeds niet.
De kolommen d, f, i, k, n en p mogen nadat ze gevuld zijn, niet meer wijzigen. Dit blijft bij mij gebeuren. Ik ben zo brutaal geweest het bestand bij te sluiten.
Kan iemand het voordoen, aanpassen of anderzins?
Oh, sufferd, ook een bestand bijvoegen lukt mij niet.

Als ik letterlijk bovengenoemde codes overneem, gebeurt er dus niets. Ik moet dus iets meer doen!:rolleyes:
 
Allen bedankt voor jullie reactie. Helaas moet ik bekennen dat ik hiermee niet ben opgeschoten. Ik heb wel door jullie geleerd hoe ik een code kan invoeren, maar de code krijg ik zelf niet goed. Wellicht moet ik nog parameters aan mijn bestand aanpassen, maar dat is mij niet gelukt.

Het bericht kan nu worden afgesloten. Fijn weekend.
 
Lucy, niet zo snel opgeven dat doen wij ook niet.
Je moet verstaan dat dit forum draait op vrijwilligers zodat een antwoord ook niet onmiddelijk komt en je soms wat geduld moet hebben.
Probeer alsnog een bestandje toe te voegen, anders wordt het voor ons raden waar jij heen wil.
Begin anders hierf al eens mee.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column = 2 Then
        With Target
            .Offset(, 2) = .Offset(, 2).Value
            .Offset(, 4) = .Offset(, 4).Value
            .Offset(, 7) = .Offset(, 7).Value
            .Offset(, 9) = .Offset(, 9).Value
            .Offset(, 12) = .Offset(, 12).Value
            .Offset(, 14) = .Offset(, 14).Value
        End With
    End If
End Sub
 
Laatst bewerkt:
de vraag is inmiddels met de volgende code opgelost

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo einde
If Target.Column = 3 Or Target.Column = 5 Or Target.Column = 8 Or Target.Column = 10 Or _
   Target.Column = 13 Or Target.Column = 15 And Target.Offset(0, 1) = Empty Then
Target.Offset(0, 1).Value = Date + Time
End If
einde:
End Sub

volgens mij een iets uitgebreidere versie van wat snb voorstelde in reactie #3
 
Laatst bewerkt:
Het is natuurlijk makkelijk van te zeggen dat je met de antwoorden niks opgeschoten bent, als je ziet dat de oplossing totaal niets te maken heeft met de vraag gesteld in de 1ste post.
Een goed antwoord vereist in de eerste plaats natuurlijk een vraagstelling conform het probleem zodat wij onze glazen bol niet hoeven boven te halen.
 
Dan zou mijn voorkeur zijn:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If InStr("_3_5_8_10_13_15", "_" & Target.Column) > 0 And Target.Offset(, 1) = "" Then Target.Offset(, 1) = Now
End Sub
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column = 2 Then
        With Target
            .Offset(, 2) = .Offset(, 2).Value
            .Offset(, 4) = .Offset(, 4).Value
            .Offset(, 7) = .Offset(, 7).Value
            .Offset(, 9) = .Offset(, 9).Value
            .Offset(, 12) = .Offset(, 12).Value
            .Offset(, 14) = .Offset(, 14).Value
        End With
    End If
End Sub

Ik ga zeker jullie oplossingen nog uitproberen en geef het niet op, maar ik heb inmiddels de oplossing gekregen, vandaar afsluiten van de vraag.Uiteraard hartelijk dank voor het meedenken. Ik ga bovenstaand ook nog uitproberen, want ik leer spelenderwijs nu wel heel veel.
 
Laatst bewerkt door een moderator:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If InStr("_3_5_8_10_13_15", "_" & Target.Column) > 0 And Target.Offset(, 1) = "" Then Target.Offset(, 1) = Now
End Sub

Ook hiervoor mijn dank. Ik leer nu in ieder geval verbindingen maken en zaken op een andere manier schrijven.
 
Laatst bewerkt door een moderator:
Daar is iedereen bij gebaat.
 
Laatst bewerkt:
Ik kom toch nog een keertje met een vraag.
Op basis van jullie informatie heb ik nu de volgende code in het werkblad gezet:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo einde
If Target.Column = 2 And Target.Offset(0, 1) = Empty Then
Target.Offset(0, 1).Value = Date + Time
End If
einde:
End Sub

Dit betekent dat als ik ctrl/shift S druk dat de tijd vast wordt gezet in de cel. Dit gaat super op mijn eigen computer met excel 2010.
Echter ik moet dit bestand gaan gebruiken op mijn zakelijke computer, omdat medewerkers dit gaan gebruiken voor een meeting die ik uitvoer in het kader van mijn opleiding Lean Six Sigma.
Wij werken aldaar met excel 2003. Nu werkt ctrl/shift S niet meer. Ik heb wel dezelfde programmacode ingevoerd. Ik denk dat het met het invoeren van ctrl/shift S te maken heeft, maar ik weet niet hoe ik dit moet doen in excel 2003. Kan iemand mij op weg helpen?
Alvast dank.
 
Dit is code op werkbladniveau (niet in een standaardmodule)en daar heb je normaliter toch geen toetsencombinatie voor nodig om deze te starten ????
Gewoon een waarde invullen in kolom B volstaat al om de macro te triggeren en automatisch de naastliggende cel in kolom C te vullen indien deze leeg is.
Waar precies heb jij deze code geplaatst ?
 
Laatst bewerkt:
Hallo Rudi,
Ik heb dit neergezet met de rechtermuisknop op het werkblad en dan programmacode. Ik heb jouw advies opgevolgd en er een cijfer ingezet, maar dan krijg ik alleen de vermelding: 0:00:00
Kun jij mij verder helpen?
 
Post je workbook waarin je deze code gebruikt eens hier op het forum, want bij mij werkt deze perfect.
Je kan ook onderstaande eens proberen, alhoewel het m.i. geen verschil gaat maken.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo einde
If Target.Column = 2 Then
    Target.Offset(, 1).Value = IIf(Target.Offset(, 1) = vbNullString, _
        Date + Time, Target.Offset(, 1))
End If
einde:
End Sub
 
Waarom geen gebruik gemaakt van 'Now' ?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan