Note: The other languages of the website are Google-translated. Back to English

Jak automatycznie rejestrować datę i godzinę po zmianie komórki?

Z łatwością możemy ręcznie wstawić statyczną datę i godzinę lub wstawić dynamiczną datę zmieniającą się wraz z czasem systemowym za pomocą formuły. Jeśli chcesz automatycznie rejestrować datę i godzinę podczas zmiany lub wprowadzania wartości, ten problem może być nieco inny. Ale w tym artykule możesz rozwiązać to zadanie, wykonując następujące czynności.

Rejestruj datę i godzinę automatycznie, gdy komórka zmienia się z kodem VBA

Karta Office Włącz edycję i przeglądanie na kartach w pakiecie Office i znacznie ułatw swoją pracę ...
Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%
  • Wykorzystaj wszystko ponownie: Dodaj najczęściej używane lub złożone formuły, wykresy i wszystko inne do ulubionych i szybko wykorzystaj je ponownie w przyszłości.
  • Ponad 20 funkcji tekstowych: Wyodrębnij liczbę z ciągu tekstowego; Wyodrębnij lub usuń część tekstów; Konwertuj liczby i waluty na angielskie słowa.
  • Narzędzia do scalania: Wiele skoroszytów i arkuszy w jeden; Scal wiele komórek / wierszy / kolumn bez utraty danych; Połącz zduplikowane wiersze i sumę.
  • Podziel narzędzia: Podziel dane na wiele arkuszy na podstawie wartości; Jeden skoroszyt do wielu plików Excel, PDF lub CSV; Jedna kolumna na wiele kolumn.
  • Wklej pomijanie Ukryte / filtrowane wiersze; Policz i suma według koloru tła; Wysyłaj spersonalizowane wiadomości e-mail do wielu odbiorców zbiorczo.
  • Super filtr: Twórz zaawansowane schematy filtrów i stosuj do dowolnych arkuszy; Sortuj według tygodnia, dnia, częstotliwości i nie tylko; Filtruj pogrubieniem, formułami, komentarzem ...
  • Ponad 300 zaawansowanych funkcji; Współpracuje z Office 2007-2021 i 365; Obsługuje wszystkie języki; Łatwe wdrażanie w przedsiębiorstwie lub organizacji.

strzałka niebieski prawy bąbelek Rejestruj datę i godzinę automatycznie, gdy komórka zmienia się z kodem VBA

Na przykład mam zakres wartości, a teraz, kiedy zmieniam lub wpisuję nowe wartości w kolumnie B, chcę, aby automatycznie rejestrowała bieżącą datę i godzinę w kolumnie C, jak pokazano na poniższym zrzucie ekranu:

aktualizacja-dokumentu-zmiany-wartości-czasu-1

Możesz zakończyć to zadanie, wykonując następujący kod VBA. Zrób tak:

1. Przytrzymaj ALT + F11 klawisze, aby otworzyć Okno Microsoft Visual Basic for Applications.

2. Następnie wybierz używany arkusz roboczy po lewej stronie Eksplorator projektówkliknij go dwukrotnie, aby otworzyć plik Moduł, a następnie skopiuj i wklej następujący kod VBA do pustego modułu:

Kod VBA: automatycznie rejestruj datę i godzinę po zmianie komórki

Private Sub Worksheet_Change(ByVal Target As Range)
'Update 20140722
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("B:B"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

aktualizacja-dokumentu-zmiany-wartości-czasu-1

3. Następnie zapisz i zamknij ten kod, aby powrócić do arkusza roboczego, teraz po zmianie wartości komórki lub wpisaniu nowych danych w kolumnie B data i godzina zostaną automatycznie zapisane w kolumnie C.

Uwagi:

1. W powyższym kodzie możesz zmodyfikować „NOCLEG ZE ŚNIADANIEM”Do dowolnej innej kolumny, w której chcesz zmienić wartości komórek w tym skrypcie: Ustaw WorkRng = Intersect (Application.ActiveSheet.Range ("B: B"), Target).

2. Dzięki temu xKolumna Odsunięcia = 1 skryptu, możesz wstawić i zaktualizować datę i godzinę do pierwszej kolumny obok zmieniającej się kolumny wartości, możesz zmienić numer 1 na inne liczby, takie jak 2,3,4,5… to oznacza, że ​​data zostanie wstawiona druga, trzecia, czwarta lub piąta kolumna oprócz kolumny ze zmienionymi wartościami.

3. Usunięcie wartości w zmienionej kolumnie spowoduje również usunięcie daty i godziny.


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (108)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Jak napisać kod, aby zrobić to wiele razy na jednej stronie Np. tekst w kolumnie B, data w C i tekst w D, data w E?
Ten komentarz został zminimalizowany przez moderatora na stronie
[cytat]Jak napisać kod, aby zrobić to wiele razy na jednej stronie Np. tekst w kolumnie B, data w C i tekst w D, data w E?Przez Hilary[/cytat] Wiem, że to stare, ale długim, ale łatwym sposobem jest skopiowanie deklaracji zmiennych i utworzenie nowych zmiennych (tj. WorkRng1 i Rng1). Musisz również skopiować instrukcję "if" i zmienić zmienne na nowe nazwy zmiennych.
Ten komentarz został zminimalizowany przez moderatora na stronie
[cytat]Jak napisać kod, aby zrobić to wiele razy na jednej stronie Np. tekst w kolumnie B, data w C i tekst w D, data w E?Przez Hilary[/quote] Oto kod: Private Sub Worksheet_Change(ByVal Target As Range) 'Update 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer 'Zmień zakres, aby wybrać aktualizowaną kolumnę, tj. („A: A") lub ("B:B") Set WorkRng = Intersect(Application.ActiveSheet.Range("E:E"), Target) xOffsetColumn = 1 'Dla drugiego znacznika czasu 'Utwórz nowe nazwy zmiennych, np. WorkRng1, Rng1 itd. Dim WorkRng1 As Range Dim Rng1 As Range Dim xOffsetColumn1 As Integer Ustaw WorkRng1 = Intersect(Application.ActiveSheet.Range("G:G"), Target) xOffsetColumn1 = 1 'Dla pierwszego znacznika czasu If Not WorkRng to nic Następnie Application.EnableEvents = False For Each Rng In WorkRng If Not VBA.IsEmpty(Rng.Value) Then Rng.Offset(0, xOffsetColumn).Value = Now Rng.Offset(0, xOffsetColumn).NumberFormat = "mm/dd/ yyyy" Else Rng.Offset(0, xOffsetColumn).ClearContents End If Next Application.EnableEvents = True End If 'Drugi znacznik czasu If Not WorkRng1 Is Nothing Then Application.EnableEve nts = False dla każdego Rng1 w WorkRng1 If Not VBA.IsEmpty(Rng1.Value) Then Rng1.Offset(0, xOffsetColumn1).Value = Teraz Rng1.Offset(0, xOffsetColumn1).NumberFormat = "mm/dd/rrrr" Else Rng1.Offset(0, xOffsetColumn1).ClearContents End If Next Application.EnableEvents = True End If End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
A jeśli chcę to zrobić dla zakresu kolumn?
Ten komentarz został zminimalizowany przez moderatora na stronie
zmień zakres (B: B) w ten sposób: (10:20) dla kolumn od 10 do 20 (D5: D40) dla kolumn od 5 do 40 w wierszu D Mam nadzieję, że to pomoże.
Ten komentarz został zminimalizowany przez moderatora na stronie
Przepraszam, zamieniam kolumny z wierszami, ale nadal działa. (D:P) Od kolumny D do P (D5:D5) od kolumny D do P w rzędzie 5
Ten komentarz został zminimalizowany przez moderatora na stronie
kiedy zapisuję to działa, ale kiedy ponownie otwieram nie działa
Ten komentarz został zminimalizowany przez moderatora na stronie
[cytat] kiedy zapisuję to działa, ale kiedy ponownie otwieram, nie działa?przez Aarifa[/quote] Ten sam problem, co Aarif... Działało to pół godziny temu, a teraz nie... poza tym chciałem tylko godzinę, a nie datę ORAZ czas, więc edytowałem „.NumberFormat”, aby był po prostu hh:mm:ss, zapisane, przetestowane... nie inaczej... jeszcze wstawiam datę i godzinę...? ponownie otworzyłem VB i wpisałem jakiś rozgraniczony tekst, zapisany ponownie, wciąż nie dobrze, potem zrobiłem to po raz trzeci, a format zrobił tak, jak został powiedziany i nagle dostałem właśnie czas. BARDZO dziwne Od dawna myślałem, że Excell jest nawiedzony, odkąd po raz pierwszy użyłem funkcji SZUKAJ, szukając wartości w komórce, którą mógłbym zobaczyć na własne oczy, ale Excel upierał się, że ona nie istnieje!? Jacyś guru Excela lub egzorcyści, którzy mogą pomóc? dlaczego ignoruje moje VB, a NIE znaczniki czasu, jak to zrobił...? dziękuję :płacz:
Ten komentarz został zminimalizowany przez moderatora na stronie
[cytat]Jak napisać kod, aby zrobić to wiele razy na jednej stronie Np. tekst w kolumnie B, data w C i tekst w D, data w E?Przez Hilary[/quote] jaka jest odpowiedź na cytat
Ten komentarz został zminimalizowany przez moderatora na stronie
Co zrobić, jeśli chcę, aby to działało, ale nie jestem w aktywnym arkuszu, więc działaj w tle i aktualizuj, gdy pojawi się wpis w kolumnie B?
Ten komentarz został zminimalizowany przez moderatora na stronie
Co się stanie, jeśli kolumna wpływająca na kolumnę znacznika czasu jest sumą wielu innych kolumn? Na przykład... Kolumna H to =Suma(E+F+G) i chciałbym, aby sygnatura czasowa była wykonywana w kolumnie I za każdym razem, gdy kolumna H została zmieniona, lub w istocie, gdy zmieniono kolumny E, F lub G . Czy możesz pomóc?
Ten komentarz został zminimalizowany przez moderatora na stronie
Potrzebuję pomocy proszę! Staram się, aby sygnatura czasowa była wykonywana za każdym razem, gdy jedna z trzech komórek zostanie zmieniona. Idealnie chciałbym to zrobić, gdy zmieni się suma tych komórek. Na przykład. Komórki E, F, G zostaną zmienione, a komórka H będzie sumą tych trzech komórek. Po zmianie komórki H chciałbym, aby komórka I była oznaczona znacznikiem czasu. Czy to możliwe?? Dziękuję bardzo
Ten komentarz został zminimalizowany przez moderatora na stronie
Próbuję uruchomić powyższy kod; jednak komórka, której zmianę chcę zarejestrować, jest połączona z polem wyboru i dlatego ma wartość „PRAWDA” lub „FAŁSZ”. Z jakiegoś powodu kod nie zadziała, gdy zmieni się komórka. Jeśli jednak ręcznie wstawię "tak", kod działa dobrze. Czy znasz jakieś obejście tego problemu? Dziękuję Ci!
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy można to zrobić dla danych historycznych? Jeśli wprowadziłem zmiany w komórce wczoraj lub miesiąc temu, czy mogę użyć formy tego kodu, aby pobrać te daty?
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy istnieje sposób na oznaczenie czasu na podstawie określonej zmiany? Na przykład mam arkusz kalkulacyjny z kolumną opcji rozwijanych, w tym pustym, „OK” i „Działaj”. Po zakończeniu zadania menu rozwijane jest ręcznie używane do wybrania „OK”. Chciałbym, aby datownik był powiązany z wyborem „OK”, ale nie z opcją „Działanie”. Opcja „Działaj” na liście rozwijanej jest używana, gdy zadanie jest przeterminowane, ale tak naprawdę staram się tylko śledzić, kiedy element jest ukończony. Czy istnieje sposób na osiągnięcie tego za pomocą powyższego kodu? Dzięki!
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy udało Ci się to rozwiązać?
Ten komentarz został zminimalizowany przez moderatora na stronie
to bardzo dobre pytanie. rozwiązałeś to, czy mógłbyś podzielić się sposobem?
dzięki
Ten komentarz został zminimalizowany przez moderatora na stronie
Mogę zmienić zakres na ("A:Q"), ale potrzebuję daty i godziny, aby przejść do "S", jeśli dane w dowolnej komórce AQ zostaną zmienione/usunięte. Jestem zakwestionowany w VBA. Każda pomoc jest bardzo ceniona!
Ten komentarz został zminimalizowany przez moderatora na stronie
Przepraszam, właśnie wysłałem pytanie i potrzebuję odpowiedzi na to... Musiałem przegapić ten komentarz... mam nadzieję, że ktoś może pomóc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Jak to zmienić, aby zmieniła się tylko data w sąsiedniej komórce?
Ten komentarz został zminimalizowany przez moderatora na stronie
Jak uzyskać znacznik czasu do zapisania w określonej komórce, zamiast w komórce obok komórki, która została zmieniona. Próbuję oznaczyć rząd komórek znacznikiem czasu, gdy nastąpi zmiana w którejkolwiek z tych komórek, chciałbym, aby znacznik czasu był rejestrowany w jednej konkretnej komórce ... czy ktoś może w tym pomóc? Dziękuję Ci!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, uprzejmie dziękuję za to, ponieważ jest to świetne rozwiązanie do kontroli WB. Czy istnieje sposób na zmodyfikowanie tego, aby data/godzina była rejestrowana gdzieś w WB za każdym razem, gdy komentarz zostanie dodany lub zmodyfikowany? Wiem, że to ogólne pytanie, ale nie jestem pewien, czy jest to możliwe (niestety w MS 2010 właściwość .comment nie zawiera właściwości date, która pozwalałaby określić, kiedy została wprowadzona. Mike
Ten komentarz został zminimalizowany przez moderatora na stronie
Jak mogę skonfigurować odczytywanie kolumny A:A i podawanie znacznika czasu w B:B tylko wtedy, gdy zostanie w niej wprowadzony 14-cyfrowy numer?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, potrzebuję pomocy w kodowaniu VBA. Tworzę arkusz kalkulacyjny ze sprawami, które zostaną przypisane do osób i będą miały status sprawy. Pełnomocnik będzie znajdował się w kolumnie H i potrzebuję datownika w kolumnie I, gdy komórka w kolumnie H zostanie zaktualizowana lub zmieniona z imieniem i nazwiskiem. Podobnie będę miał status sprawy w Kol. J i będę potrzebował datownika w Kol. K, kiedy status zostanie wprowadzony lub zmieniony. także w przypadku, gdy nie ma nazwiska lub statusu osoby, która nie jest cesjonariuszem, datownik w Col I i K powinien być pusty. Każda pomoc byłaby mile widziana. Dzięki
Ten komentarz został zminimalizowany przez moderatora na stronie
Znalazłem ten kod gdzie indziej i zmodyfikowałem go na swój użytek. Jeśli zrobisz to poprawnie, nie musisz się martwić wprowadzaniem funkcji w komórce lub pliku zmieniającego daty na datę z tego dnia za każdym razem, gdy jest otwierany. - otwórz Excel - naciśnij "Alt + F11" - Kliknij dwukrotnie arkusz, do którego chcesz zastosować zmianę (wymieniony po lewej) - skopiuj/wklej poniższy kod - dostosuj dane wejściowe Zakres (_: _), aby odpowiadały do kolumny, którą zaktualizujesz - dostosuj dane wejściowe Offset(0,_) tak, aby odpowiadało kolumnie, w której chcesz wyświetlić datę (w wersji poniżej dokonuję aktualizacji do kolumny D i chcę, aby data była wyświetlana w kolumnie F, stąd wpis wejściowy "2" dla 2 kolumn powyżej kolumny D) - naciśnij Zapisz - powtórz powyższe kroki, jeśli w skoroszycie są inne arkusze, które wymagają tego samego kodu - może być konieczna zmiana formatu liczb w kolumnie wyświetlającej data do „Ogólne” i zwiększ szerokość kolumny, jeśli wyświetla się „####” po zaktualizowaniu wpisu Skopiuj/wklej poniższy kod: ____________________________________________________________ Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range(" D:D")) to nic, to wyjście z podrzędnej wartości docelowej(0, 2) = data zakończenia podrzędnej ___ _________________________________________________________ Powodzenia...
Ten komentarz został zminimalizowany przez moderatora na stronie
ten kod pokaże datę po kliknięciu, czy można pokazać datę tylko wtedy, gdy zmieni się zawartość komórki, jeśli tylko kliknięto i nic się nie zmieniło, to data się nie wyświetla lub poprzednio wprowadzona data zostaje?
Ten komentarz został zminimalizowany przez moderatora na stronie
Kiedy nagrywam w makrze formułę vloocup, więc jak mogę zrobić tę datę automatycznie zmienioną na 1 dzień w górę Podobnie jak w dniu 21, a następnego dnia została zmieniona na 07 Automatycznie udostępnij pls, jeśli jest jakiś kod vba.
Ten komentarz został zminimalizowany przez moderatora na stronie
zastąp tę linię
Rng.Offset(0, xOffsetColumn).Value = Teraz

do
Rng.Offset(0, xOffsetColumn).Value = Teraz+1
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję bardzo za kod! Dokładnie to, czego szukałem!!
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję za pomoc :-)
Nie ma tu jeszcze żadnych komentarzy
Pokaż więcej

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL