Infoga datumstämpel med VBA

Anonim

Att infoga datum i Excel med VBA är lika enkelt som att skriva en formel i en cell.

VBA -tidsstämpelkoden är:

Område ("A1"). Värde = Format (nu, "mm/dd/åååå HH: mm: ss")

Denna kod visar aktuellt datum och tid i cell A1. Och ja, det är det. det är gjort.

"Nu" -funktionen returnerar aktuellt datum och tid, och "Format" -funktionen formaterar utmatningen till "mm/dd/åååå HH: mm: ss" -format.

Visa datum och tid när en ändring görs med VBA.

Låt oss säga att du har förberett ett blad. I det här bladet vill du att tiden ska visas i kolumn B när någon gör en post Kolumn A.

Nu behöver vi en VBA -tidsstämpelkod som körs varje gång när ändring görs i kolumn A.

Koden nedan gör jobbet enkelt.

Kör makro när en ändring görs (Arbetsblad Ändra händelsehanterare)

Private Sub Worksheet_Change (ByVal Target As Range) If Not Intersect (Target, Range ("A: A")) Is Nothing ThenOn Error Resume Next If Target.Value = "" ThenTarget.Offset (0, 1) = "" Else Target .Offset (0, 1) .Value = Format (Nu, "mm/dd/åååå HH: mm: ss") End If End If End Sub 

För att köra denna kod, öppna VBA och dubbelklicka på arket i projektfönstret där du vill visa tidsstämpel.

Nu måste vi använda VBA -händelsehanteraren eftersom vi vill köra vår kod för att köra varje gång när en ändring görs.

Välj arbetsblad på rullgardinsmenyn ovanför din kod.

Nu intill kalkylbladet visas du en annan nedrullningsbar. Den innehåller många eventhanterare. För tillfället väljer du "ändra".

Kopiera nu ovanstående kod här.

Och det är gjort. Gå tillbaka till ditt blad och kontrollera det.

Kodförklaring:

    • Koden skrivs på blad 1 genom att dubbelklicka på den. Det betyder att din kod endast tillhör det här bladet.
    • Vi använde "Ändra" händelsehanterare för "Arbetsblad" för att utlösa vår VBA -kod.
    • Private Sub Worksheet_Change (ByVal Target As Range)

      Detta är det fasta och standardnavigeringsnamnet för en ändringshändelsehanterare.

    • Vi vill att vår kod ska köras ändring görs endast i kolumn A.
    • If Not Intersect (Target, Range ("A: A")) är ingenting då

      Den här raden kontrollerar om den ändrade cellen finns i kolumn A eller inte.

    • Om ovanstående rad returnerar True, körs dessa rader
Vid fel Återuppta nästa om Target.Value = "" ThenTarget.Offset (0, 1) = "" ElseTarget.Offset (0, 1) .Value = Format (Nu, "mm/dd/åååå HH: mm: ss")

Den första raden ignorerar felpop och kör dessa två rader. Om du utelämnar On Fel Återuppta nästa du kommer att se fel dyker upp när du tar bort ett värde i kolumn A.

Om Target.Value = "" Då

:- Den här raden kontrollerar om en cell i kolumn A är tom. Om ja då

Target.Offset (0, 1) = ""

:- Denna rad raderar intilliggande cellvärde.

Och om det är falskt

 Else Target.Offset (0, 1) .Value = Format (nu, "mm/dd/åååå HH: mm: ss")

:- Den här raden anger aktuell tid och datum i anslutning till A-kolumnen.

  • Och de tre sista raderna stänger bara deras respektive block. Och det är klart. Nu har du ett ark som ger en exakt ändringstid i en cell i kolumn A.

Du kanske har märkt att det finns flera händelsehanterare i listrutan. Lek runt dem. Försök att ta reda på vad varje händelsehanterare fungerar. Och om du har problem, skriv ner det i kommentarfältet.

Infoga datumstämpel med VBA