Как автоматически записывать дату и время при изменении ячейки?
Нам легко вставить статическую дату и время вручную или вставить динамическую дату, меняющуюся вместе с системным временем, с помощью формулы. Если вы хотите автоматически записывать дату и время при изменении или вводе значений, эта проблема может быть несколько иной. Но в этой статье вы можете решить эту задачу, выполнив следующие шаги.
Автоматическая запись даты и времени при изменении ячейки с помощью кода VBA
Автоматическая запись даты и времени при изменении ячейки с помощью кода VBA
Например, у меня есть диапазон значений, и теперь, когда я изменяю или ввожу новые значения в столбец B, я хочу, чтобы в столбце C автоматически записывались текущая дата и время, как показано на следующем снимке экрана:
Вы можете завершить эту задачу с помощью следующего кода 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
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-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (108)
Оценок пока нет. Оцените первым!
Автоматический ввод даты при изменении значения. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Автоматическая вставка текущей даты в ячейку при вводе данных
Предположим, у нас имеется таблица заказов, куда пользователь вводит номер заказа, имя клиента, сумму и т.д. Необходимо сделать так, чтобы при внесении номера заказа в столбец А — в столбце B напротив введенного заказа автоматически появлялись дата и время его занесения:
Чтобы реализовать такой ввод даты, нам потребуется простой макрос, который надо добавить в модуль рабочего листа. Для этого щелкните правой кнопкой мыши по ярлычку листа с таблицей и выберите в контекстном меню команду Исходный текст (View code).
В открывшееся окно редактора Visual Basic скопируйте этот текст этого макроса:
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100 With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If Next cell End Sub
При необходимости измените «чувствительный» диапазон «А2:А100» на свой собственный. Если необходимо вставлять дату не в соседний столбец, а правее — подставьте в оператор Offset(0,1) вместо 1 число побольше.
Закройте редактор Visual Basic и попробуйте ввести что-нибудь в диапазон А2:А100. В соседней ячейке тут же появится текущая дата-время!
Ссылки по теме
- Как сделать выпадающий календарь для быстрого ввода любой даты мышью в любую ячейку.
- Как Excel работает с датами
- Что такое макрос, как он работает, куда копировать текст макроса, как запустить макрос?
ArtistJoker 0 / 0 / 0 Регистрация: 18.11.2015 Сообщений: 2 |
||||||
1 |
||||||
18.11.2015, 17:43. Показов 9185. Ответов 11 Метки нет (Все метки)
Привет, форумчане! Очень прошу помочь. На работе заполняю отчёт, в котором вручную приходится вставлять дату изменений строки(не просто ячейки) с информацией по клиенту. Искал в сети помощь, нашёл только вот такой код (внесение даты изменений соседней ячейки):
———————————————————————————————————————- Заранее благодарен! Вложения
0 |
Vlad999 3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
||||
18.11.2015, 17:58 |
2 |
|||
Сообщение было отмечено ArtistJoker как решение Решение
1 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||||||
18.11.2015, 18:59 |
3 |
|||||||
Альтернативный вариант (на основании выложенного примера)
или
1 |
0 / 0 / 0 Регистрация: 18.11.2015 Сообщений: 2 |
|
23.11.2015, 17:10 [ТС] |
4 |
Спасибо, огромное! Всё работает как надо!
0 |
0 / 0 / 0 Регистрация: 12.02.2020 Сообщений: 23 |
|
07.07.2020, 20:58 |
5 |
Подскажите как подкорректировать для моего случая:
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
07.07.2020, 21:00 |
6 |
gpetrv, Скажите чей вариант Вы выбрали ?
0 |
0 / 0 / 0 Регистрация: 12.02.2020 Сообщений: 23 |
|
07.07.2020, 22:38 |
7 |
pashulka, Мне все равно чей вариант, лишь бы рабочий……и универсальный (изменять диапазоны ячеек)
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
07.07.2020, 22:40 |
8 |
|||
Next — следующий лист.
1 |
0 / 0 / 0 Регистрация: 12.02.2020 Сообщений: 23 |
|
07.07.2020, 22:51 |
9 |
pashulka, А на первом листе?
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
07.07.2020, 23:18 |
10 |
gpetrv, В модуле первого листа — событие Worksheet_Change. Тогда на следующем — будет выводиться дата+время изменения данных ячеек диапазона A2:V20 Если месторасположение второго рабочего листа, в дальнейшем, может меняться, то можно использовать имя этого листа или кодовое(программное) имя. Т.е. вместо Me.Next написать Worksheets(«Лист2») или Лист2 . Разумеется, имена нужно указать свои.
1 |
0 / 0 / 0 Регистрация: 12.02.2020 Сообщений: 23 |
|
29.07.2020, 21:21 |
11 |
pashulka, не могу скомпоновать со своим кодом. Не силен…. Помогите..
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
29.07.2020, 22:24 |
12 |
|||
Это тоже мой код, но там всего один рабочий лист. Если в реальности появится второй, то между первой и второй
строкой просто добавьте
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
29.07.2020, 22:24 |
12 |
Здравствуйте. Есть таблица, в которой у этапов работ проставлены дата начала и дата конца этапа. Например:
Предпложим, сейчас идет 1-ый этап.
Вижу, что к сроку 7 марта не успеваю закончить. Таким образом, дата завершения этапа сдвигается.
Я записываю новую дату в ячейку с датой конца 1-го этапа.
Вот что происходит:
Мне нужно, чтобы сдвинулся весь график работ.
Поскольку дата конца первого этапа сдвинулась на 3 дня вперед, то и остальные даты должны сдвинутся на 3 дня вперед относительно первоначального плана.
Вот так:
Пробовал мудрить с функцией сегодня и смещением, но запутался и так ничего не сделал…. Помогите написать функцию