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

Как автоматически записывать дату и время при изменении ячейки?

Нам легко вставить статическую дату и время вручную или вставить динамическую дату, меняющуюся вместе с системным временем, с помощью формулы. Если вы хотите автоматически записывать дату и время при изменении или вводе значений, эта проблема может быть несколько иной. Но в этой статье вы можете решить эту задачу, выполнив следующие шаги.

Автоматическая запись даты и времени при изменении ячейки с помощью кода VBA

Вкладка Office позволяет редактировать и просматривать в Office с вкладками и значительно упрощает работу ...
Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%
  • Повторное использование чего угодно: Добавляйте наиболее часто используемые или сложные формулы, диаграммы и все остальное в избранное и быстро используйте их в будущем.
  • Более 20 текстовых функций: Извлечь число из текстовой строки; Извлечь или удалить часть текстов; Преобразование чисел и валют в английские слова.
  • Инструменты слияния: Несколько книг и листов в одну; Объединить несколько ячеек / строк / столбцов без потери данных; Объедините повторяющиеся строки и сумму.
  • Разделить инструменты: Разделение данных на несколько листов в зависимости от ценности; Из одной книги в несколько файлов Excel, PDF или CSV; От одного столбца к нескольким столбцам.
  • Вставить пропуск Скрытые / отфильтрованные строки; Подсчет и сумма по цвету фона; Отправляйте персонализированные электронные письма нескольким получателям массово.
  • Суперфильтр: Создавайте расширенные схемы фильтров и применяйте их к любым листам; Сортировать по неделям, дням, периодичности и др .; Фильтр жирным шрифтом, формулы, комментарий ...
  • Более 300 мощных функций; Работает с Office 2007-2021 и 365; Поддерживает все языки; Простое развертывание на вашем предприятии или в организации.

стрелка синий правый пузырь Автоматическая запись даты и времени при изменении ячейки с помощью кода VBA

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

doc-update-time-value-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-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 for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

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

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (108)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Как вы пишете код, чтобы сделать это несколько раз на одной странице Ex. текст в столбце 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 Set WorkRng1 = Intersect(Application.ActiveSheet.Range("G:G"), Target) xOffsetColumn1 = 1 'В первый раз штамп времени If Not WorkRng Is Nothing Тогда Application.EnableEvents = False Для каждого Rng в WorkRng Если не 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 'Для второй отметки времени If Not WorkRng1 Is Nothing Then Application.EnableEve nts = False для каждого Rng1 в WorkRng1 Если не VBA.IsEmpty(Rng1.Value), то Rng1.Offset(0, xOffsetColumn1).Value = Now Rng1.Offset(0, xOffsetColumn1).NumberFormat = "mm/dd/yyyy" Else 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]при сохранении работает, а при повторном открытии не работаетАвтор Аариф[/quote] Та же проблема, что и у Aarif... Полчаса назад это сработало, а теперь нет... кроме того, я хотел указать только время, а не дату И время, поэтому я отредактировал ".NumberFormat" следующим образом: просто чч:мм:сс, сохранил, проверил... ничем не отличается... все еще ставлю дату и время...? снова открыл VB и набрал какой-то текст с разделителями, снова сохранил, все равно бесполезно, тогда я сделал это в третий раз, и формат сделал, как было сказано, и внезапно я получил как раз время. ОЧЕНЬ странно Я давно думал, что Excell преследуется, с тех пор, как я впервые использовал функцию ПОИСК, ища значение в ячейке, которое я мог видеть своими глазами, но Excel настаивал на том, что этого не существует!? Любые гуру Excel или экзорцисты, которые могут помочь? почему он игнорирует мой VB, а НЕ отметку времени, как это было ...? спасибо :плакать:
Этот комментарий был сведен к минимуму модератором на сайте
[quote]Как написать код, чтобы сделать это несколько раз на одной странице? текст в столбце B, дата в C и текст в D, дата в E?Хилари[/quote] какой ответ на цитату
Этот комментарий был сведен к минимуму модератором на сайте
Что, если я хочу, чтобы это выполнялось, но я не на активном листе, поэтому запускаю в фоновом режиме и обновляю всякий раз, когда есть запись в столбце B?
Этот комментарий был сведен к минимуму модератором на сайте
Что, если столбец, влияющий на столбец меток времени, представляет собой сумму нескольких других столбцов? Например... Столбец H равен = Sum (E + F + G), и я хотел бы, чтобы отметка времени выполнялась в столбце I каждый раз, когда столбец H был изменен или, по сути, когда столбцы E, F или G были изменены . Можете ли вы помочь ??
Этот комментарий был сведен к минимуму модератором на сайте
Мне нужна помощь, пожалуйста! Я пытаюсь сделать отметку времени каждый раз, когда изменяется одна из трех ячеек. В идеале я хотел бы сделать это, когда сумма этих ячеек была изменена. Например. Ячейки E, F, G будут изменены, а ячейка H будет суммой этих трех ячеек. Когда ячейка H была изменена, я хотел бы, чтобы ячейка I была отмечена временем. Это возможно?? Спасибо большое
Этот комментарий был сведен к минимуму модератором на сайте
Я пытаюсь запустить приведенный выше код; однако ячейка, изменение которой я хочу записать, связана с флажком и поэтому является либо «ИСТИНА», либо «ЛОЖЬ». По какой-то причине код не будет работать при изменении ячейки. Однако, если я вставлю "да" вручную, код работает нормально. Любое решение этой проблемы, о котором вы знаете? Благодарю вас!
Этот комментарий был сведен к минимуму модератором на сайте
Можно ли это сделать для исторических данных? Если я внес изменения в ячейку вчера или месяц назад, могу ли я использовать форму этого кода для получения этих дат?
Этот комментарий был сведен к минимуму модератором на сайте
Есть ли способ поставить отметку времени на основе конкретного изменения? Например, у меня есть электронная таблица со столбцом раскрывающихся параметров, включая пустое, «ОК» и «Действовать». Когда задача завершена, раскрывающийся список вручную используется для выбора «ОК». Я бы хотел, чтобы отметка даты была привязана к моменту выбора «ОК», но не к моменту выбора «Действовать». Параметр «Действовать» в раскрывающемся списке используется, когда задача просрочена, но я просто пытаюсь отследить, когда элемент выполнен. Есть ли способ сделать это с помощью приведенного выше кода? Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Вы смогли это решить?
Этот комментарий был сведен к минимуму модератором на сайте
это очень хороший вопрос. Вы разобрались, не могли бы вы поделиться способом?
благодаря
Этот комментарий был сведен к минимуму модератором на сайте
Я могу изменить диапазон на («A: Q»), но мне нужно, чтобы дата и время отображались в «S», если данные в любой ячейке AQ изменены/удалены. Мне бросают вызов VBA. Любая помощь приветствуется!
Этот комментарий был сведен к минимуму модератором на сайте
Извините, я только что задал вопрос, и мне нужен ответ на него... Должно быть, я пропустил этот комментарий... надеюсь, кто-то может помочь!
Этот комментарий был сведен к минимуму модератором на сайте
Как изменить его, чтобы менялась только дата соседней ячейки?
Этот комментарий был сведен к минимуму модератором на сайте
Как получить отметку времени для записи в определенную ячейку, а не в ячейку рядом с той, которая была изменена. Я пытаюсь установить отметку времени для ряда ячеек, когда происходит изменение в любой из этих ячеек, я хотел бы, чтобы отметка времени записывалась в одной конкретной ячейке... может ли кто-нибудь помочь с этим? Благодарю вас!
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Большое спасибо за это, так как это отлично подходит для аудита WB. Есть ли способ изменить это, чтобы дата/время регистрировались где-то в WB всякий раз, когда комментарий добавляется или изменяется? Я знаю, что это общий вопрос, но я не уверен, что это возможно (к сожалению, для MS 2010 свойство .comment не содержит свойство даты, чтобы определить, когда оно было введено. Майк
Этот комментарий был сведен к минимуму модератором на сайте
Как я могу настроить чтение столбца A: A и выдачу отметки времени в B: B только тогда, когда в него введено 14-значное число?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, мне нужна помощь в кодировании VBA. Я создаю электронную таблицу с делами, которые будут назначены людям и имеют статус дела. Правопреемник будет в столбце H, и мне нужна отметка даты в столбце I, когда ячейка в столбце H обновляется или изменяется с именем. Точно так же у меня будет статус дела в столбце J, и мне понадобится отметка даты в столбце K, когда статус будет введен или изменен. также, когда есть имя или статус, не являющийся правопреемником, мне нужно, чтобы отметка даты в столбцах I и K была пустой. Любая помощь будет оценена по достоинству. Спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Я нашел этот код в другом месте и изменил его для своего использования. Если все сделано правильно, вам не нужно беспокоиться о вводе функции в ячейку или о том, что файл меняет даты на дату этого дня каждый раз, когда он открывается. - откройте Excel - нажмите «Alt+F11» - дважды щелкните лист, к которому вы хотите применить изменения (перечислены слева) - скопируйте/вставьте приведенный ниже код - отрегулируйте ввод Range(_:_), чтобы он соответствовал в столбец, который вы будете обновлять - настройте ввод Offset(0,_) так, чтобы он соответствовал столбцу, в котором вы хотите отображать дату (в приведенной ниже версии я вношу обновления в столбец D и хочу, чтобы дата отображалась в столбце F, следовательно, входная запись «2» для 2 столбцов из столбца D) — нажмите «Сохранить» — повторите шаги, описанные выше, если в вашей книге есть другие рабочие листы, которым нужен тот же код — возможно, вам придется изменить числовой формат столбца, отображающего дату на «Общие» и увеличьте ширину столбца, если он отображает «####» после того, как вы сделаете обновленную запись. Скопируйте/вставьте код ниже: ____________________________________________________________ Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range(" D:D")) ничего, затем выйдите из подцели. Смещение (0, 2) = Дата окончания подцели ___ _________________________________________________________ Удачи...
Этот комментарий был сведен к минимуму модератором на сайте
этот код будет показывать дату при нажатии, возможно ли отображать дату только при изменении содержимого в ячейке, если только щелкнуть и ничего не изменилось, тогда дата не отображается или ранее введенная дата остается?
Этот комментарий был сведен к минимуму модератором на сайте
Когда я записываю в макрос формулу vloocup, так как я могу сделать, чтобы эта дата автоматически менялась на 1 день, например, 21/07/2017, а на следующий день она менялась на 22/07/2017. Автоматически, пожалуйста, поделитесь, если есть какой-либо код vba.
Этот комментарий был сведен к минимуму модератором на сайте
замените эту строку
Rng.Offset(0, xOffsetColumn).Value = Сейчас

в
Rng.Offset(0, xOffsetColumn).Value = Now+1
Этот комментарий был сведен к минимуму модератором на сайте
Большое спасибо за код! Именно то, что я искал!!
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за помощь :-)
Здесь еще нет комментариев
Загрузить ещё
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL