Sisestage kuupäeva ja kellaaja tempel koos VBA -ga

Anonim

Kuupäeva ja kellaaja sisestamine Excelisse VBA abil on sama lihtne kui valemi lahtrisse kirjutamine.

VBA ajatempli kood on:

Vahemik (“A1”). Väärtus = Vorming (nüüd "kk/pp/aaaa HH: mm: ss")

See kood näitab lahtris A1 praegust kuupäeva ja kellaaega. Ja jah, see on see. see on tehtud.

Funktsioon „Now” tagastab praeguse kuupäeva ja kellaaja ning funktsioon „Format” vormindab väljundi „mm/dd/yyyy HH: mm: ss” vormingusse.

Näidake kuupäeva ja kellaaega, kui VBA abil muudatusi tehakse.

Oletame, et olete lehe valmistanud. Sellel lehel soovite, et veerus B näidataks aega, kui keegi teeb veeru A veeru.

Nüüd vajame VBA ajatempli koodi, mis käivitub iga kord, kui veerus A tehakse muudatusi.

Allolev kood võimaldab teil hõlpsalt tööd teha.

Muutuse tegemisel käivitage makro (töölehe muutmise sündmuste käitleja)

Privaatne alamlehe_muutmine (ByVal sihtmärk vahemikuna), kui see ei lõiku (sihtmärk, vahemik ("A: A")) pole midagi siis .Nihke (0, 1) .Väärtus = Vorming (Nüüd, "mm/pp/aaaa HH: mm: ss") Lõpp kui lõpp Kui lõpp Alam 

Selle koodi käivitamiseks avage VBA ja topeltklõpsake projekti aknas lehte, millel soovite kuvada ajatempli.

Nüüd peame kasutama VBA sündmuste käitlejat, kuna tahame käivitada oma koodi iga kord, kui muudatusi tehakse.

Valige koodi kohal olevast rippmenüüst Tööleht.

Nüüd näete töölehe rippmenüü kõrval teist rippmenüüd. See sisaldab palju sündmuste käitlejaid. Praegu valige "Muuda".

Nüüd kopeerige ülaltoodud kood siia.

Ja seda tehakse. Naaske oma lehe juurde ja kontrollige seda.

Koodi selgitus:

    • Kood kirjutatakse lehele1, topeltklõpsates sellel. See tähendab, et teie kood kuulub ainult sellele lehele.
    • Kasutasime VBA koodi käivitamiseks „Töölehe” sündmuste käitlejat „Muuda”.
    • Privaatne alamlehe muutmine (ByVal Target kui vahemik)

      See on muudatuste sündmuste käitleja fikseeritud ja vaikimisi alamprogrammi nimi.

    • Soovime, et meie kood käivituks, muudetakse ainult veerus A.
    • Kui mitte ristuda (sihtmärk, vahemik ("A: A")) pole siis midagi

      See rida kontrollib, kas muudetud lahter on veerus A või mitte.

    • Kui ülaltoodud rida tagastab tõese, siis need read täidetakse
On Error Resume Next If Target.Value = "" ThenTarget.Offset (0, 1) = "" ElseTarget.Offset (0, 1) .Value = Formaat (Nüüd, "mm/dd/yyyy HH: mm: ss")

Esimene rida eirab tõrketeadet ja käivitab need kaks rida. Kui jätate Sees vahele Viga Jätka järgmisena näete vea A väärtuse kustutamisel tõrkeid.

If Target.Value = "" Siis

:- See rida kontrollib, kas veeru A lahter on tühi. Kui jah siis

Target.Offset (0, 1) = ""

:- See rida kustutab külgneva lahtri väärtuse.

Ja kui vale

 Muu Target.Offset (0, 1) .Väärtus = Vorming (Nüüd, "mm/pp/aaaa HH: mm: ss")

:- See rida sisestab veeru A kõrval praeguse kellaaja ja kuupäeva.

  • Ja viimased kolm rida sulgevad oma ploki. Ja see on tehtud. Nüüd on teil leht, mis annab veeru A lahtris tehtud muudatuste täpse aja.

Võib-olla olete märganud, et ripploendis on mitu sündmuste käitlejat. Mängige nende ümber. Proovige välja mõelda, mis iga sündmuste käitleja töötab. Ja kui teil on raskusi, kirjutage see kommentaaride sektsiooni.

Sisestage kuupäeva ja kellaaja tempel koos VBA -ga