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

Як записати дату та час автоматично при зміні комірки?

Нам легко вставити статичну дату та час вручну або вставити динамічну дату, що змінюється із системним часом за допомогою формули. Якщо ви хочете записати дату та час автоматично при зміні або введенні значень, ця проблема може вирішуватися дещо по-іншому. Але в цій статті ви можете вирішити це завдання, виконавши такі дії.

Записуйте дату та час автоматично, коли комірка змінюється за допомогою коду VBA


стрілка синя права міхур Записуйте дату та час автоматично, коли комірка змінюється за допомогою коду VBA

Наприклад, у мене є діапазон значень, і тепер, коли я зміню або вводжу нові значення в стовпці B, я хочу, щоб вони автоматично записували поточну дату та час у стовпці C, як показано на наступному знімку екрана:

doc-update-time-value-changes-changes-1

Ви можете виконати це завдання за допомогою наступного коду VBA. Будь ласка, зробіть так:

1. Утримуйте клавішу ALT + F11 ключі, щоб відкрити Вікно Microsoft Visual Basic для програм.

2. Потім виберіть свій використаний аркуш зліва Провідник проектів, двічі клацніть на ньому, щоб відкрити Модулі, а потім скопіюйте та вставте наступний код VBA у порожній модуль:

Код VBA: автоматично записуйте дату та час при зміні комірки

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

doc-update-time-value-changes-changes-1

3. Потім збережіть і закрийте цей код, щоб повернутися до робочого аркуша. Тепер, коли ви змінюєте значення комірки або вводите нові дані в стовпець B, дата і час будуть автоматично записані в стовпець C.

Примітки:

1. У наведеному вище коді ви можете змінити “B: B”До будь-якого іншого стовпця, для якого потрібно змінити значення комірок у цьому сценарії: Встановити WorkRng = Intersect (Application.ActiveSheet.Range ("B: B"), Target).

2. З цим xOffsetColumn = 1 сценарію, ви можете вставити і оновити дату та час до першого стовпця поруч зі стовпцем, що змінює значення, ви можете змінити число 1 на інші числа, наприклад 2,3,4,5… це означає, що дата буде вставлена ​​в другий, третій, четвертий чи п'ятий стовпець, крім стовпця зі зміненими значеннями.

3. Коли ви видалите значення зі зміненого стовпця, також буде видалено дату та час.


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

  • Повторне використання: Швидко вставте складні формули, діаграми і все, що ви використовували раніше; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
  • Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
  • Об’єднати клітинки / рядки / стовпці без втрати даних; Вміст розділених комірок; Об'єднати повторювані рядки / стовпці... Запобігання дублюючим клітинам; Порівняйте діапазони...
  • Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
  • Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
  • Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
  • Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
  • Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
  • Понад 300 потужних функцій. Підтримує Office / Excel 2007-2021 і 365. Підтримує всі мови. Легке розгортання на вашому підприємстві чи в організації. 30-денна безкоштовна пробна версія повних функцій. 60-денна гарантія повернення грошей.
вкладка kte 201905

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (108)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Як написати код, щоб зробити це кілька разів на одній сторінці Напр. текст у стовпці B, дата в C і текст у D, дата в E?
Цей коментар був мінімізований модератором на сайті
[quote]Як написати код, щоб зробити це кілька разів на одній сторінці Напр. текст у стовпці B, дата в C і текст у D, дата в E?Від Хіларі[/quote] Я знаю, що це застаріло, але довгий, але простий спосіб – скопіювати оголошення змінних і створити нові змінні (тобто WorkRng1 і Rng1). Ви також повинні скопіювати оператор "if" і змінити змінні на нові імена змінних.
Цей коментар був мінімізований модератором на сайті
[quote]Як написати код, щоб зробити це кілька разів на одній сторінці Напр. текст у стовпці B, дата в C і текст у D, дата в E?Від Хіларі[/quote] Ось код: Private Sub Worksheet_Change(ByVal Target As Range) 'Оновити 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer 'Змініть діапазон, щоб вибрати стовпець, який ви оновлюєте, тобто ("A: A") або ("B:B") Встановіть WorkRng = Intersect(Application.ActiveSheet.Range("E:E"), Target) xOffsetColumn = 1 'Для другої позначки часу 'Створіть нові імена змінних, наприклад WorkRng1, Rng1 тощо. Dim WorkRng1 As Range Dim Rng1 As Range Dim xOffsetColumn1 As Integer Установіть WorkRng1 = Intersect(Application.ActiveSheet.Range("G:G"), Target) xOffsetColumn1 = 1 'Для першого відмітки часу Якщо не WorkRng - нічого Тоді Application.EnableEvents = False для кожного Rng в WorkRng Якщо не VBA.IsEmpty(Rng.Value) Тоді Rng.Offset(0, xOffsetColumn).Value = Тепер Rng.Offset(0, xOffsetColumn).NumberFormat = "mm/dd/ yyyy" Інакше Rng.Offset(0, xOffsetColumn).ClearContents End, якщо наступне Application.EnableEvents = True End, якщо 'Другий штамп часу Якщо не працюєRng1 нічого, то Application.EnableEve nts = False для кожного Rng1 в WorkRng1 Якщо не VBA.IsEmpty(Rng1.Value) Тоді Rng1.Offset(0, xOffsetColumn1).Value = Тепер Rng1.Offset(0, xOffsetColumn1).NumberFormat = "mm/dd/yyyy" Rng1.Offset(0, xOffsetColumn1).ClearContents End If Next Application.EnableEvents = True End If End Sub
Цей коментар був мінімізований модератором на сайті
Що робити, якщо я хочу зробити це для діапазону стовпців?
Цей коментар був мінімізований модератором на сайті
змініть діапазон (B:B) так: (10:20) для стовпців з 10 по 20 (D5:D40) для стовпців з 5 по 40 у рядку D Сподіваюся, це допоможе.
Цей коментар був мінімізований модератором на сайті
Вибачте, я поміняю стовпці рядками, але це все одно працює. (D:P) Від стовпця D до P (D5:D5) від стовпця D до P у рядку 5
Цей коментар був мінімізований модератором на сайті
коли я зберігаю його, працює, але коли я знову відкриваю, не працює
Цей коментар був мінімізований модератором на сайті
[quote]Коли я зберігаю його, працює, але коли я знову відкриваю, не працюєАвтор: Aarif[/quote] Та сама проблема, що й у Ааріфа... Півгодини тому це спрацювало, а тепер не... Крім того, я хотів, щоб лише час, а не дата І час, тому я відредагував ".NumberFormat" таким чином просто hh:mm:ss, збережено, перевірено... не інакше... все ще вставляю дату та час...? знову відкрив VB і ввів деякий текст із роздільниками, знову зберіг, все одно нічого добре, тоді я зробив це втретє, і формат зробив, як було сказано, і раптом я отримав саме час. ДУЖЕ дивно. Я довго думав, що Excell переслідують, з тих пір, як я вперше використав функцію ПОШУК, шукаючи значення в клітинці, яке я міг побачити на власні очі, але Excel наполягав, що його не існує!? Будь-який гуру Excel або екзорцисти, які можуть допомогти? чому він ігнорує мій VB і НЕ мітки часу, як це було...? дякую :cry:
Цей коментар був мінімізований модератором на сайті
[quote]Як написати код, щоб зробити це кілька разів на одній сторінці Напр. текст у стовпці B, дата в C і текст у D, дата в E?Від Хіларі[/quote] яка відповідь на цитату
Цей коментар був мінімізований модератором на сайті
Що робити, якщо я хочу, щоб це запускалося, але я не на активному аркуші, тому запускати у фоновому режимі та оновлювати щоразу, коли є запис у стовпці B?
Цей коментар був мінімізований модератором на сайті
Що робити, якщо стовпець, який впливає на стовпець позначки часу, є сумою кількох інших стовпців? Наприклад... Стовпець H є =Sum(E+F+G), і я хотів би, щоб відмітка часу в стовпці I була змінена щоразу, коли стовпець H було змінено, або, по суті, коли були змінені стовпці E, F або G . Чи можете ви допомогти??
Цей коментар був мінімізований модератором на сайті
Мені потрібна допомога, будь ласка! Я намагаюся зробити позначку часу кожного разу, коли змінюється одна з трьох клітинок. В ідеалі я хотів би зробити це, коли сума цих клітинок була змінена. Наприклад. Комірки E, F, G будуть змінені, а клітинка H буде СУМАЮ цих трьох клітинок. Коли клітинку H було змінено, я хотів би, щоб у клітинці I був штамп часу. Це можливо?? Дуже дякую
Цей коментар був мінімізований модератором на сайті
Я намагаюся запустити наведений вище код; однак клітинка, зміна якої я хочу записати, пов’язана з прапорцем і, отже, має значення "TRUE" або "FALSE". Чомусь при зміні комірки код не працюватиме. Однак, якщо я вставлю сказати "так" вручну, код працює нормально. Будь-який шлях вирішення цієї проблеми, про який ви знаєте? Дякую!
Цей коментар був мінімізований модератором на сайті
Чи можна це зробити для історичних даних? Якщо я вніс зміни до клітинки вчора або місяць тому, чи можу я використовувати форму цього коду, щоб отримати ці дати?
Цей коментар був мінімізований модератором на сайті
Чи існує спосіб відмітки часу на основі певної зміни? Наприклад, у мене є електронна таблиця зі стовпчиком спадного меню, зокрема порожнім, «ОК» і «Дій». Коли завдання буде виконано, спадне меню вручну використовується для вибору «Ok». Я б хотів, щоб штамп дати був прив’язаний до того, коли вибрано «Ok», але не коли вибрано «Act». Параметр «Дій» у спадному меню використовується, коли завдання прострочено, але я насправді просто намагаюся відстежити, коли елемент виконано. Чи є спосіб зробити це за допомогою наведеного вище коду? Спасибі!
Цей коментар був мінімізований модератором на сайті
Чи змогли ви вирішити це?
Цей коментар був мінімізований модератором на сайті
це дуже гарне питання. ви розібралися, не могли б ви поділитися способом?
Дякую
Цей коментар був мінімізований модератором на сайті
Я можу змінити діапазон на ("A:Q"), але мені потрібно, щоб дата та час перейшли в "S", якщо дані в будь-якій клітинці AQ змінено/видалено. Мені виклик VBA. Будь-яка допомога дуже вдячна!
Цей коментар був мінімізований модератором на сайті
Вибачте, я щойно опублікував запитання, і мені потрібна відповідь на нього... Мабуть, я пропустив цей коментар... Сподіваюся, хтось може допомогти!
Цей коментар був мінімізований модератором на сайті
Як змінити це так, щоб змінювалася лише дата сусідніх клітинок?
Цей коментар був мінімізований модератором на сайті
Як отримати мітку часу для запису в конкретну клітинку, а не в клітинку поруч із зміненою. Я намагаюся поставити рядок клітинок із відміткою часу, коли в будь-якій із цих клітинок відбувається зміна, я хотів би, щоб мітка часу записувалася в одній конкретній клітинці... чи може хтось допомогти з цим? Дякую!
Цей коментар був мінімізований модератором на сайті
Привіт, дякую за це, оскільки це чудово підходить для перевірки WB. Чи є спосіб змінити це, щоб дата/час реєструвалися десь у СБ щоразу, коли додається або змінюється коментар? Я знаю, що це загальне питання, але я не впевнений, чи це можливо (на жаль, для MS 2010 властивість .comment не містить властивості дати, щоб визначити, коли вона була введена. Майк
Цей коментар був мінімізований модератором на сайті
Як я можу налаштувати читання стовпця A:A та надання відмітки часу в B:B лише тоді, коли в нього введено 14-значне число?
Цей коментар був мінімізований модератором на сайті
Привіт, мені потрібна допомога з кодуванням VBA. Я створюю електронну таблицю зі справами, які будуть призначені людям і мати статус справи. Правоодержувач буде в стовпчику H, а мені потрібен штамп дати в стовпчику I, коли клітинка в стовпчику H буде оновлена ​​або змінена на ім’я. Подібним чином я матиму статус справи в Col J і знадобиться штамп дати в Col K, коли статус буде введено або змінено. також, якщо ім’я або статус не правонаступника, мені потрібно, щоб штамп дати в стовпцях I та K був пустим. Будемо вдячні за будь-яку допомогу. Спасибі
Цей коментар був мінімізований модератором на сайті
Я знайшов цей код в іншому місці і змінив його для свого використання. Якщо все зроблено належним чином, вам не доведеться турбуватися про введення функції в клітинку або файл, який змінює дати на дату цього дня кожного разу, коли його відкривають. - відкрийте Excel - натисніть "Alt+F11" - двічі клацніть на робочому аркуші, до якого ви хочете застосувати зміни (перелічено ліворуч) - скопіюйте/вставте наведений нижче код - налаштуйте діапазон (_:_) відповідно до до стовпця, який ви оновлюватимете - налаштуйте введення Offset(0,_) відповідно до стовпця, де ви хочете, щоб відображалася дата (у версії нижче я вношу оновлення в стовпець D і хочу, щоб дата відображалася в стовпці F, отже, вхідний запис «2» для 2 стовпців над стовпчиком D) - натисніть зберегти - повторіть кроки вище, якщо у вашій книзі є інші робочі аркуші, для яких потрібен такий самий код - можливо, вам доведеться змінити числовий формат стовпця, що відображає введіть дату до «Загальні» та збільште ширину стовпця, якщо він відображає «####» після того, як ви внесли оновлений запис. D:D")) Is Nothing Then Exit Sub Target.Offset(0, 2) = Date End Sub ___ _________________________________________________________ Удачі...
Цей коментар був мінімізований модератором на сайті
цей код показуватиме дату, коли вона з’являється, чи можна показати дату лише тоді, коли вміст у комірці змінено, якщо лише клацнули й нічого не змінилося, то дата не відображається або раніше введена дата залишається?
Цей коментар був мінімізований модератором на сайті
Коли я записую в макросі формулу vloocup, то як я можу зробити, щоб ця дата автоматично змінювалася на 1 день, наприклад, 21, потім наступного дня вона змінювалася на 07 Автоматично, будь ласка, поділіться, якщо є код vba.
Цей коментар був мінімізований модератором на сайті
замінити цей рядок
Rng.Offset(0, xOffsetColumn).Value = Зараз

до
Rng.Offset(0, xOffsetColumn).Значення = Зараз+1
Цей коментар був мінімізований модератором на сайті
Дуже дякую за код! Саме те, що я шукав!!
Цей коментар був мінімізований модератором на сайті
Дякую за твою допомогу :-)
There are no comments posted here yet
Load More

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL