Datum-tijdstempel invoegen met VBA

Anonim

Het invoegen van de datumtijd in Excel met VBA is net zo eenvoudig als het schrijven van een formule in een cel.

De VBA-tijdstempelcode is:

Bereik ("A1").waarde = Formaat (Nu, "mm/dd/jjjj UU:mm:ss")

Deze code toont de huidige datum en tijd in cel A1. En ja, dat is het. het is klaar.

De functie "Nu" retourneert de huidige datum en tijd, en de functie "Formaat" formatteert de uitvoer in de indeling "mm/dd/jjjj HH:mm:ss".

Toon datum en tijd wanneer een wijziging wordt aangebracht met VBA.

Laten we zeggen dat je een blad hebt voorbereid. In dit blad wilt u dat de tijd wordt weergegeven in kolom B wanneer iemand een invoer in Kolom A doet.

Nu hebben we een VBA-tijdstempelcode nodig die elke keer wordt uitgevoerd wanneer een wijziging wordt aangebracht in kolom A.

Met de onderstaande code wordt het werk gemakkelijk gedaan.

Macro uitvoeren wanneer er een wijziging is aangebracht (werkblad wijzigingsgebeurtenis-handler)

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing ThenOn Error Hervatten Volgende If Target.Value = "" ThenTarget.Offset(0, 1) = "" Else Target .Offset(0, 1).Waarde = Formaat(Nu, "mm/dd/jjjj UU:mm:ss") End If End If End Sub 

Om deze code uit te voeren, opent u VBA en dubbelklikt u op het blad in het projectvenster waarop u de tijdstempel wilt weergeven.

Nu moeten we VBA-gebeurtenishandler gebruiken, omdat we onze code willen uitvoeren om elke keer dat er een wijziging wordt aangebracht, te worden uitgevoerd.

Selecteer Werkblad in de vervolgkeuzelijst boven uw code.

Nu naast de vervolgkeuzelijst voor het werkblad, ziet u nog een vervolgkeuzelijst. Het bevat veel event handlers. Selecteer voorlopig "wijzigen".

Kopieer nu bovenstaande code hier.

En het is gedaan. Ga terug naar je blad en controleer het.

Code Verklaring:

    • De code wordt op blad1 geschreven door erop te dubbelklikken. Het betekent dat uw code alleen bij dit blad hoort.
    • We hebben de gebeurtenishandler "Change" van "Worksheet" gebruikt om onze VBA-code te activeren.
    • Private Sub Worksheet_Change (ByVal-doel als bereik)

      Dit is de vaste en standaard subroutinenaam van een change event handler.

    • We willen dat onze code alleen wordt gewijzigd in kolom A.
    • Als niet snijden (doel, bereik ("A: A")) is niets dan

      Deze regel controleert of de gewijzigde cel in kolom A staat of niet.

    • Als de bovenstaande regel nu True retourneert, worden deze regels uitgevoerd
Bij fout hervatten volgende If Target.Value = "" ThenTarget.Offset(0, 1) = "" ElseTarget.Offset(0, 1).Value = Format(Now, "mm/dd/jjjj HH:mm:ss")

De eerste regel negeert foutpop en voert deze twee regels uit. Als u Aan weglaat Fout Hervatten Volgende u ziet een fout verschijnen wanneer u een waarde in kolom A verwijdert.

If Target.Value = "" Dan

:- Deze regel controleert of een cel in kolom A leeg is. Zo ja, dan?

Doel.Offset(0, 1) = ""

: - Deze regel verwijdert aangrenzende celwaarde.

En als False

 Anders Target.Offset(0, 1).Waarde = Formaat(Nu, "mm/dd/jjjj HH:mm:ss")

:- Deze regel voert de huidige tijd en datum in naast de A-kolom.

  • En de laatste drie regels sluiten gewoon hun respectievelijke blok. En het is klaar. Nu heb je een blad met een exacte tijd van wijziging die is gemaakt in een cel van kolom A.

Het is je misschien opgevallen dat er verschillende gebeurtenishandlers in de vervolgkeuzelijst staan. Speel om hen heen. Probeer erachter te komen wat elke gebeurtenishandler werkt. En als je problemen hebt, schrijf het dan op in het opmerkingengedeelte.

Datum-tijdstempel invoegen met VBA