Excel дата последнего изменения ячейки

 

Tweaker

Пользователь

Сообщений: 3
Регистрация: 05.06.2019

#1

05.06.2019 15:13:38

Добрый день.
Подскажите код макроса, чтобы при заполнении/изменении значений любой из ячеек в данном ряду таблицы автоматом указывалась текущая дата в отдельной ячейке этого ряда. Ну то есть дата последнего изменения. Нашел что-то похожее, но там только дата изменений одной ячейки, а нужно по диапазону. Понимаю, что скорее всего это делается элементарно, но мои знания VBA очень близки к нулю, поэтому обращаюсь сюда и буду благодарен за любую помощью.
Можно сделать/объяснить на основе приложенного файла.
Тот код что нашел:

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 And Target.Row > 1 And Not IsEmpty(Target.Value) Then _
        Target.Offset(0, -1).Value = Date
End Sub

Прикрепленные файлы

  • Пример.xlsx (8.45 КБ)

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#2

05.06.2019 15:20:14

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A2:D5")) Is Nothing Then
        Application.EnableEvents = False
        Cells(Target.Row, 5) = Date
    End If
    Application.EnableEvents = True
End Sub
 

Tweaker

Пользователь

Сообщений: 3
Регистрация: 05.06.2019

Юрий М, спасибо. Не ожидал столь оперативного ответа. Все работает именно так как нужно.
А можно как-то сделать чтобы при первом внесении информации в одну из ячеек строки или вставки новой строки дата фиксировалась? И после при внесении изменений уже не менялась. Ну то есть в примере одна ячейка — это дата первичного ввода информации, значение которой неизменно, а вторая ячейка (код который Вы написали выше и тут все понятно) — это дата изменений в любой из ячеек строки, и эта дата может меняться.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#4

05.06.2019 16:19:15

Как зафиксировать дату изменения, обсуждалось неоднократно.

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A2:D5")) Is Nothing Then
        Application.EnableEvents = False
        If Cells(Target.Row, 5) = "" Then
            Cells(Target.Row, 5) = Date
        Else
            Cells(Target.Row, 6) = Date
        End If
    End If
    Application.EnableEvents = True
End Sub
 

Tweaker

Пользователь

Сообщений: 3
Регистрация: 05.06.2019

Юрий М, в данном случае получается идет проверка на изменение конкретной ячейки, а не всей строки таблицы. То есть пользователь может сначала заполнить хоть 1 ячейку и «дата внесения» появится и зафиксируется. Дальше пользователь может зайти и заполнить 2-ую ячейку в той же строке и это не будет считаться изменением. И только когда пользователь изменит данные в уже ранее заполненной ячейке, тогда уже появится «дата изменения». Это не совсем то, но хоть что-то.
Еще раз большое Вам спасибо за помощь.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#6

05.06.2019 18:26:31

Цитата
Tweaker написал:
Это не совсем то

А как нужно?

 

art163

Пользователь

Сообщений: 9
Регистрация: 28.12.2019

#7

28.12.2019 15:33:50

Доброго времени , подскажите , можно ли этот код немного изменить , нужно чтобы он отслеживал изменение в ячейке которое вводиться не вручную , а получается в результате вычисления некой(любой) формулы.

Код
 If Target.Cells.Count > 1 Then Exit Sub 
    If Not Intersect(Target, Range("A2:D5")) Is Nothing Then
        Application.EnableEvents = False
        If Cells(Target.Row, 5) = "" Then
            Cells(Target.Row, 5) = Date
        Else
            Cells(Target.Row, 6) = Date
        End If
    End If
    Application.EnableEvents = True
End Sub

Изменено: art16328.12.2019 21:12:20

0 / 0 / 0

Регистрация: 18.03.2014

Сообщений: 3

1

Дата посленднего изменения ячеек

18.03.2014, 17:38. Показов 31942. Ответов 5


Студворк — интернет-сервис помощи студентам

Доброго всем времени суток.
Столкнулся со следующим вопросом. Есть база данных в экселе — более 1500 контактов. Обзаванивать призодится часто и не по-одному разу. В голове не удерживается информация кому и когда звонил. Хочу в столбце следующем за тем, где вношу изменения по остаткам, чтобы отображалась дата и время последнего изменения ячейки стобца с остатками. Надеюсь не сильно закрутил.
Заранее благодарю всех откликнувшихся!!!
З.Ы. С глубоки почтением к всем тем, кто сумел подлуржиться с языакми программирования — ОЧЕНЬ прошу написать «как для чайника» — что нажимать и куда что копировать.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

18.03.2014, 17:38

5

Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

18.03.2014, 17:59

2

Допустим, надо отслеживать изменения в ст. В и вносить дату в ст. С. В модуль листа (правый клик по ярлычку листа — Исходный текст)

Visual Basic
1
2
3
4
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Intersect(Columns("B"), Target(1)).Offset(, 1) = Now
End Sub

Если другой столбец — поменяйте букву в кавычках.
Формат столбца с датами установите по желанию.



2



0 / 0 / 0

Регистрация: 18.03.2014

Сообщений: 3

18.03.2014, 18:10

 [ТС]

3

Спасибо за оперативность!!!
Ниже — это я правильно сделал???

Дата посленднего изменения ячеек



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

18.03.2014, 18:35

4

Попробуйте менять ячейки в ст. К. Если в соседнем столбце появляется дата, то да.



0



0 / 0 / 0

Регистрация: 18.03.2014

Сообщений: 3

18.03.2014, 18:37

 [ТС]

5

АГРОМНОЕ СПАСИБО!!! РАБОТАЕТ!!!!! )))))))))))))))))))))))))))))))))))))))))))))))) )))))))))))))))))))))))))))



0



0 / 0 / 0

Регистрация: 10.03.2019

Сообщений: 111

02.12.2019, 20:01

6

Доброго дня и ночи. Не подскажите как можно заменить в написанном выше коде Intersect(Columns(«B»), Target(1)).Offset(, 1) = Now на например Intersect(Columns(«A:H» ) , чтобы дата изменения ставилась в строго одном столбце. Имеется массив несколько столбцов, если произошло изменение в строке из нескольких столбцов нужно что бы изменения фиксировались в одном столбце?



0



Получить и вставить время создания и время последнего изменения в ячейки

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

Получите время создания и время последнего изменения в Excel с помощью команды Info

Получите время создания и время последнего изменения в Excel с помощью функции дополнительных свойств

Вставьте созданное время и время последнего изменения в ячейки Excel с кодом VBA

Вставьте время создания и время последнего изменения в ячейки/верхний/нижний колонтитул с помощью Kutools for Excel хорошая идея3


стрелка синий правый пузырь Получите время создания и время последнего изменения в Excel с помощью команды Info

Мы можем узнать точное время создания и время последнего изменения текущей книги в представлении за кулисами Microsoft Excel 2010/2013.

Нажмите Файл > Инфо, а в правой части представления за кулисами отображается Связанные даты Информация. Под Связанные даты title, в нем указано время последнего изменения, время создания и время последней печати. См. Следующий снимок экрана:

Примечание: Этот способ доступен только в Microsoft Excel 2010/2013. Это недопустимо в Excel 2007.


стрелка синий правый пузырьПолучите время создания и время последнего изменения в Excel с помощью функции дополнительных свойств

Фактически, мы можем получить как время создания, так и время последнего изменения текущей книги в диалоговом окне «Свойства документа».
Шаг 1: Открой Дополнительные свойства диалоговое окно:

В Excel 2007 щелкните значок Офисы кнопка> Подготовить > ПредложенияИ Свойства документа панель будет отображаться под панелью инструментов, щелкните Свойства документа > Дополнительные свойства, смотрите скриншоты:

В Excel 2010/2013 щелкните значок Файл > Инфо > Предложения > Дополнительные свойства.

документ-вставка-измененное время-4-4

Шаг 2: В Дополнительные свойства В диалоговом окне вы увидите время создания и время последнего изменения на вкладке Статистика. См. Следующий снимок экрана:

документ-вставка-измененное время-4-4


стрелка синий правый пузырь Вставьте созданное время и время последнего изменения в ячейки Excel с кодом VBA

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

Вставьте время создания и время последнего изменения в Excel

Шаг 1: Удерживайте ALT + F11 ключи, и он открывает окно Microsoft Visual Basic для приложений.

Шаг 2: Нажмите Вставить >> Модулии вставьте следующий макрос в окно модуля.

Код VBA: вставьте время создания и время последнего изменения в Excel

Sub Workbook_Open()
Range("A1").Value = Format(ThisWorkbook.BuiltinDocumentProperties("Creation Date"), "short date")
Range("A2").Value = Format(ThisWorkbook.BuiltinDocumentProperties("Last Save Time"), "short date")
End Sub

Шаг 3:Нажмите F5 ключ для запуска этого макроса. И тогда дата создания и дата последнего изменения будут вставлены в ячейку A1 и ячейку A2 отдельно.

Внимание: вы можете изменить ячейку назначения в VB в соответствии с вашими потребностями.

Вставить время последнего изменения книги в Excel

Шаг 1: Удерживайте ALT + F11 ключи, и он открывает окно Microsoft Visual Basic для приложений.

Шаг 2: Нажмите Вставить >> Модулии вставьте следующий макрос в окно модуля.

Public Function ModDate()
ModDate = Format(FileDateTime(ThisWorkbook.FullName), "m/d/yy h:n ampm")
End Function

Шаг 3: Затем сохраните и закройте этот код и вернитесь на рабочий лист, в пустой ячейке введите формулу = ModDate (), и нажмите Enter ключ. Затем он вставляет в ячейку время последнего изменения.

-2

Вставить созданное время книги в Excel

Шаг 1: Удерживайте ALT + F11 ключи, и он открывает окно Microsoft Visual Basic для приложений.

Шаг 2: Нажмите Вставить >> Модулии вставьте следующий макрос в окно модуля.

Function CreateDate() As Date
CreateDate = ActiveWorkbook.BuiltinDocumentProperties("Creation Date")
End Function

Шаг 3: Сохраните и закройте этот код, вернитесь на лист, в пустой ячейке введите формулу = CreateDate (), и нажмите Enter key. и созданная дата будет вставлена ​​в ячейку, как показано на следующих снимках экрана:

-2

Примечание: Если ваша ячейка не является форматом даты, она может отображать странное число. Просто отформатируйте эту ячейку как Время формат, он будет отображаться как обычная дата.


стрелка синий правый пузырь Вставьте время создания и время последнего изменения в ячейки/верхний/нижний колонтитул с помощью Kutools for Excel

Могу я представить вам удобный инструмент —Kutools for Excel какие из более чем 300 полезных функций могут повысить эффективность вашей работы? С этими Вставить информацию о книге Вы можете быстро вставить путь к книге, имя книги / рабочего листа, имя пользователя или время создания и время последнего изменения в ячейки, верхний или нижний колонтитул.

После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:

1. Нажмите Кутулс Плюс > Workbook > Вставить информацию о книге. Смотрите скриншот:
doc последнее изменение name2

2. Затем в Вставить информацию о книге диалоговом окне, проверьте информацию, которую вы хотите вставить из раздела информации, затем перейдите, чтобы указать место, в которое вы хотите вставить, вы можете выбрать ячейки, нижний колонтитул (левый нижний колонтитул, центральный нижний колонтитул, правый нижний колонтитул) или заголовок (левый верхний колонтитул, центральный верхний колонтитул, правый заголовок). Смотрите скриншот:
вставка документа создана, время изменения 1

3. Нажмите Ok, и проверяемая вами информация была вставлена ​​в указанное вами место.

Наконечник. Если вы хотите получить бесплатную пробную версию функции «Вставить информацию о книге», пожалуйста, перейдите к бесплатной загрузке Kutools for Excel сначала, а затем перейдите к применению операции в соответствии с вышеуказанными шагами.

стрелка синий правый пузырь Вставить информацию о книге


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

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

вкладка kte 201905


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

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Добрый день,

имеется столбец данных, в ячейки которого регулярно вносятся изменения.
В соседнем столбце необходимо выводить даты последнего изменения для каждой соотв. ячейки.

Подскажите пожалуйста, как это сделать?
Спасибо за помощь!


Каков вопрос…

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = 0
    Target.Offset(, 1) = Date
    Application.EnableEvents = -1
End Sub

Я, как всегда, чертовски адекватен… Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771


Цитата: KuklP от 26.02.2012, 09:07
Каков вопрос…
Private Sub Worksheet_Change(ByVal Target As Range)
   Application.EnableEvents = 0
   Target.Offset(, 1) = Date
   Application.EnableEvents = -1
End Sub

Спасибо за отклик!
Прошу прощения за возможно глупый вопрос (с макросами мало опыта)
Я копирую код, создаю module. Сохраняю книгу с поддержкой макросов.
Далее в окне макросов ничего не появляется. Если убрать privat из кода, то всё ОК, но макрос не работает (cant execute… пишет)
Как работать с кодом, поскажите!
Спасибо!)


Это надо скопировать в модуль листа, а не в отдельный модуль.

Я, как всегда, чертовски адекватен… Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771


Цитата: KuklP от 26.02.2012, 09:07
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = 0
    Target.Offset(, 1) = Date
    Application.EnableEvents = -1
End Sub

Здравствуйте Сергей.
Подскажете пожалуйста, как (в данном примере) определить, изменилось ли содержание ячейки после её активации?  Есть ли такой код?
Ибо я использую скрытый доп. столбец для сравнения.  :)
Спасибо.

Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


Привет, Васильич. Не понял вопроса. Этот код срабатывает именно на изменение ячейки. Если речь о том, что вошли в режим редактирования и ничего не изменили, то:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a
    Application.EnableEvents = 0
    a = Target.Value
    Application.Undo
    If Target <> a Then
        Target.Offset(, 1) = Date
        Target = a
    End If
    Application.EnableEvents = -1
End Sub

Я, как всегда, чертовски адекватен… Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771


Спасибо записал.
Все решает строчка
Application.Undo

Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


Дата последнего изменения в ячейке.

Roman777

Дата: Среда, 22.04.2015, 09:51 |
Сообщение № 1

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

Добрый день!
Можно ли создать функцию, которая записывала бы дату последнего изменения ячейки?
[vba]

Код

Public Function ДатИзмен(Яч)
ДатИзмен(Яч)=’дата изменения ячейки «Яч»
End Function

[/vba]
Вообще в экселе есть фиксирование для каждой ячейки — когда она была изменена (под изменением, в первую очередь, имеется в виду изменение введённого в неё значения)?


Много чего не знаю!!!!

 

Ответить

Manyasha

Дата: Среда, 22.04.2015, 10:15 |
Сообщение № 2

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

Roman777, здравствуйте. Можно записывать на отдельный лист (или в текстовый файл). Например так:[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
     With Sheets(«log»)
         lr = .Cells(Rows.Count, 1).End(xlUp).Row + 1
         .Range(«A» & lr) = Target.Address
         .Range(«B» & lr) = Now
     End With
End Sub

[/vba]

К сообщению приложен файл:

7937435.xlsm
(15.1 Kb)


ЯД: 410013299366744 WM: R193491431804

 

Ответить

Roman777

Дата: Среда, 22.04.2015, 10:22 |
Сообщение № 3

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

Manyasha, О! оч прикольный способ. Спасибо).
Хочу сразу уточнить, а если бы я захотел скрыть этот лист «log». В коде мне надо будет его сначало отобразить, а в конце снова скрыть? или не обязательно?


Много чего не знаю!!!!

 

Ответить

Manyasha

Дата: Среда, 22.04.2015, 10:45 |
Сообщение № 4

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

Roman777, не обязательно. У меня работает и без отображения.
А вот если Вы лист Log защитите, то защиту нужно будет программно снимать и ставить обратно.


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал ManyashaСреда, 22.04.2015, 10:45

 

Ответить

Roman777

Дата: Среда, 22.04.2015, 10:52 |
Сообщение № 5

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

Manyasha, Да, я тоже уже попробовал. Спасибо!


Много чего не знаю!!!!

 

Ответить

_Boroda_

Дата: Среда, 22.04.2015, 10:59 |
Сообщение № 6

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

если Вы лист Log защитите, то защиту нужно будет программно снимать и ставить обратно.

Марин, не обязательно каждый раз. Если повесить на открытие книги что-то в этом роде
[vba]

Код

Лист2.Protect Password:=»MyPassword», UserInterfaceOnly:=True

[/vba]
, то лист будет защищен только от ручных действий пользователя, а макросом его можно будет менять.
Майкрософтовская объяснялка


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Manyasha

Дата: Среда, 22.04.2015, 11:05 |
Сообщение № 7

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

А я даже и не задумывалась о таком способе. Александр, спасибо! Запомню на будущее.


ЯД: 410013299366744 WM: R193491431804

 

Ответить

Как узнать, когда и кем были внесены изменения в таблицу Excel 2010?

Как сделать так что бы отображалась дата внесенного изменения в конкретную таблицу?

  1. Штатными средствами Excel. Для этого необходимо сделать книгу общей. Меню
    РецензированиеДоступ к книге – установить галочку
    Разрешить изменять файл…:
  2. Далее потребуется пересохранить книгу. Теперь в заголовке окна Excel после названия книги появится слово
    Общий.
    После этого нужно определится с режим исправлений:
    Меню РецензированиеИсправленияВыделить исправления.
    Как видим, можно отслеживать изменения по времени, по пользователю или по диапазону ячеек.
    Еще можно решить, где выделять изменения: в ячейке или на отдельном листе.
    В первом случае получается своего рода комментарий к ячейке:

    , а во втором – журнал изменений.

  3. Если книгу делать общей нежелательно, можно воспользоваться вот таким макросом:

Здесь «A3:D8» – диапазон ячеек, в которых отслеживаются изменения,
«B1» – ячейка для записи результата.

Пример работы макроса:

Как добавить макрос (на примере Excel 2010) написано
здесь.

Но при таком способе, как только вносится изменение, так сразу отображается дата и как
следствие нельзя отменить действие. Как видно, способ также не лишен недостатков.

Яндекс.Метрика

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Excel дата плюс время
  • Excel дата перевод в месяц
  • Excel дата отображается как текст
  • Excel дата одним числом
  • Excel дата обновление ячейки

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии