Indsæt dato tidsstempel med VBA

Anonim

Indsætning af dato i Excel ved hjælp af VBA er lige så enkelt som at skrive en formel i en celle.

VBA -tidsstempelkoden er:

Område ("A1"). Værdi = Format (Nu, "mm/dd/åååå HH: mm: ss")

Denne kode viser den aktuelle dato og klokkeslæt i celle A1. Og ja, det er det. Det er gjort.

"Nu" -funktionen returnerer den aktuelle dato og klokkeslæt, og funktionen "Format" formaterer output til "mm/dd/åååå HH: mm: ss" -format.

Vis dato og klokkeslæt, når der foretages en ændring ved hjælp af VBA.

Lad os sige, at du har forberedt et ark. I dette ark ønsker du, at tiden skal vises i kolonne B, når nogen foretager en indtastning Kolonne A.

Nu har vi brug for en VBA -tidsstempelkode, der kører hver gang, når der foretages ændringer i kolonne A.

Nedenstående kode får arbejdet let udført.

Kør makro, når der foretages en ændring (regnearksændring til begivenhedshåndtering)

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) .Værdi = Format (Nu, "mm/dd/åååå HH: mm: ss") Afslut hvis slut hvis slut sub 

For at køre denne kode skal du åbne VBA og dobbeltklikke på arket i projektvinduet, hvor du vil vise tidsstempel.

Nu skal vi bruge VBA event -handler, da vi vil køre vores kode til at køre hver gang, når der foretages en ændring.

Vælg regneark i rullemenuen over din kode.

Nu ved siden af ​​rullemenuen med regneark ser du en anden rullemenu. Den indeholder en masse begivenhedsbehandlere. Vælg nu "ændring".

Kopier nu ovenstående kode her.

Og det er gjort. Gå tilbage til dit ark og tjek det.

Kode Forklaring:

    • Koden skrives på ark1 ved at dobbeltklikke på den. Det betyder, at din kode kun tilhører dette ark.
    • Vi brugte "Skift" hændelseshandler for "Arbejdsark" til at udløse vores VBA -kode.
    • Private Sub Worksheet_Change (ByVal Target As Range)

      Dette er det faste og standard underprogramnavn for en ændringshændelseshandler.

    • Vi vil have vores kode til at køre ændring foretages kun i kolonne A.
    • Hvis ikke skæres (mål, rækkevidde ("A: A")) er der ikke noget

      Denne linje kontrollerer, om den ændrede celle er i kolonne A eller ej.

    • Hvis ovenstående linje nu returnerer True, udføres disse linjer
Ved fejl Genoptag næste hvis Target.Value = "" ThenTarget.Offset (0, 1) = "" ElseTarget.Offset (0, 1) .Value = Format (Nu, "mm/dd/åååå HH: mm: ss")

Den første linje ignorerer fejlpop og kører disse to linjer. Hvis du udelader On Fejl Genoptag næste du vil se fejl dukke op, når du sletter en værdi i kolonne A.

Hvis Target.Value = "" Så

:- Denne linje kontrollerer, om en celle i kolonne A er tom. Hvis ja så

Target.Offset (0, 1) = ""

:- Denne linje sletter tilstødende celleværdi.

Og hvis det er falsk

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

:- Denne linje indtaster det aktuelle klokkeslæt og den dato, der ligger ved siden af ​​A-kolonnen.

  • Og de sidste tre linjer lukker bare deres respektive blok. Og det er gjort. Nu har du et ark, der giver et nøjagtigt tidspunkt for ændring foretaget i en celle i kolonne A.

Du har muligvis bemærket, at der er flere event-behandlere på rullelisten. Leg omkring dem. Prøv at finde ud af, hvad hver event -handler fungerer. Og hvis du har problemer, skriv det ned i kommentarfeltet.

Indsæt dato tidsstempel med VBA