Время изменения ячейки excel

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

Доброго времени суток!

Помогите с решением следующей задачи:

В таблице есть несколько столбцов (около10), расположенных в разных местах таблицы (не по порядку) В них ежедневно собираются данные по выработке работников. Нужно фиксировать дату и время внесения данных в любую из ячеек этих столбцов.
Пример таблицы ( столбцы со значениями: В, D, F, H, J, L, N, P, R, T; Cтолбцы с датами :A, C, E, G, I, K, M, O, Q, S, U; Начиная с 4ой строки и вниз на 10 тыс строк)

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

Решения, которые расписаны в сети либо не работают либо не под мой случай. Про макросы только начал читать информацию, поэтому надеюсь на понятный ответ.

Заранее спасибо!

Автоматическая вставка текущей даты в ячейку при вводе данных

Предположим, у нас имеется таблица заказов, куда пользователь вводит номер заказа, имя клиента, сумму и т.д. Необходимо сделать так, чтобы при внесении номера заказа в столбец А — в столбце B напротив введенного заказа автоматически появлялись дата и время его занесения:

date_auto_enter3.png

Чтобы реализовать такой ввод даты, нам потребуется простой макрос, который надо добавить в модуль рабочего листа. Для этого щелкните правой кнопкой мыши по ярлычку листа с таблицей и выберите в контекстном меню команду Исходный текст (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 работает с датами
  • Что такое макрос, как он работает, куда копировать текст макроса, как запустить макрос?

Фиксация времени изменения в ячейке

light26

Дата: Вторник, 30.08.2011, 18:43 |
Сообщение № 1

Группа: Друзья

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

Сообщений: 1341


Репутация:

91

±

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


2007, 2010, 2013

Всем доброго времени суток.
Подобные темы уже проскальзывали на форуме, но как называются я не помню, а через поиск по ключевым словам не нашел.
Задача:
1. При выборе ячеек столбцов O, P, Q появляется календарь и можно выбрать дату и время. Такой макрос есть в «Готовых решениях», но он только для даты. Время там не выберешь
2. В ячейках столбцов от Х до АВ должно появляться время/дата та, когда были произведены изменения в столбце В. Причем, в зависимости от выбора из выпадающего списка ячеек столбца В, время/дата должны заноситься в соответствующую ячейку соответствующей строки диапазона от Х до АВ. Например. в ячейке В10 из выпадающего списка выбираем «В работе». Происходит это в 14:32 31.09.11. Значит в строке Y10 появляется запись: 14:32 31.09.11. Затем в 11:17 02.11.11 в ячейке В10 ставим «Выполнен». Значит в ячейке Z10 появляется запись: 11:17 02.11.11 и т.д.

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

5838585.xls
(49.0 Kb)


Я не волшебник. Я только учусь

Сообщение отредактировал light26Вторник, 30.08.2011, 18:47

 

Ответить

RAN

Дата: Вторник, 30.08.2011, 21:32 |
Сообщение № 2

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Соответствие в файле еще то!
В списке 7 позиций, столбцов — 5.
Порядок позиций в списке один, порядок столбцов другой.
А ведь эксперт! biggrin
Для «зарегистрировано» развернул дату и время.
Если есть желание — по образцу! cool


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RANВторник, 30.08.2011, 21:34

 

Ответить

light26

Дата: Вторник, 30.08.2011, 22:07 |
Сообщение № 3

Группа: Друзья

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

Сообщений: 1341


Репутация:

91

±

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


2007, 2010, 2013

Все там правильно. Специфика такого построения таблицы обусловлена требованиями отчетности. А как насчет календаря?
Не, я конечно и за это премного благодарен, но все-же…


Я не волшебник. Я только учусь

Сообщение отредактировал light26Среда, 31.08.2011, 00:00

 

Ответить

light26

Дата: Среда, 31.08.2011, 07:58 |
Сообщение № 4

Группа: Друзья

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

Сообщений: 1341


Репутация:

91

±

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


2007, 2010, 2013

Уррррррааааа!!!!!! Я сам допер где, как и что надо поменять в теле написанного RAN макроса ))))
Благо макрос простенький smile


Я не волшебник. Я только учусь

Сообщение отредактировал light26Среда, 31.08.2011, 12:09

 

Ответить

nosbuka

Дата: Суббота, 24.11.2012, 02:17 |
Сообщение № 5

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

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


Добрый день.
У меня похожая ситуация, правда, как я думаю, немного легче. Но я все равно не могу понять, что я делаю не так.
Пожалуйста, объясните.
Мне необходимо, чтобы при выставлении позиции из списка (ячейка А1:А16) в ячейке (B1:B16) отображалась дата и время выставления самой позиции.
Сделал так, как указывалось в предыдущем примере, но, видимо, чего-то не учел.
Буду очень благодарен за объяснения.

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

7195776.xlsm
(21.4 Kb)

 

Ответить

KuklP

Дата: Суббота, 24.11.2012, 11:02 |
Сообщение № 6

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

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

Сообщений: 2369


Репутация:

486

±

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


2003-2010

Всего-то циферку поменять:
[vba]

Code

If Not Intersect(Target, Columns(1)) Is Nothing Then

[/vba]
а вообще Вам достаточно:
[vba]

Code

Private Sub Worksheet_Change(ByVal Target As Range)
      If Intersect(Target, Columns(1)) Is Nothing Or Target.Count <> 1 Then Exit Sub
      Target.Offset(, 1) = Format(Now, «hh:nn DD.MM.YYYY»)
End Sub

[/vba]
И больше ничего не надо.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

Сообщение отредактировал KuklPСуббота, 24.11.2012, 11:10

 

Ответить

RAN

Дата: Суббота, 24.11.2012, 11:20 |
Сообщение № 7

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Или так

[vba]

Code

Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Count <> 1 Then Exit Sub
     If Not Intersect(Target, Columns(1)) Is Nothing Then
         If Len(Target) Then Target(, 2) = Date Else Target(, 2) = «»
     End If
End Sub

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

nosbuka

Дата: Суббота, 24.11.2012, 16:18 |
Сообщение № 8

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

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


Спасибо Вам большое!)
Все работает, я знал, что истина где-то рядом)

 

Ответить

nosbuka

Дата: Воскресенье, 25.11.2012, 18:57 |
Сообщение № 9

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

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


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

 

Ответить

RAN

Дата: Воскресенье, 25.11.2012, 19:04 |
Сообщение № 10

Группа: Друзья

Ранг: Экселист

Сообщений: 5645


Быть или не быть, вот в чем загвоздка!

 

Ответить

nosbuka

Дата: Воскресенье, 25.11.2012, 19:40 |
Сообщение № 11

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

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


Спасибо, я видел этот пост.
Видимо, я не туда вписываю код..
Ставлю защиту листа, пароль 1111, меняю значение ячейки — макрос ломается.

 

Ответить

nosbuka

Дата: Воскресенье, 25.11.2012, 20:13 |
Сообщение № 12

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

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


Разобрался. Огромное Вам спасибо!

 

Ответить

RAN

Дата: Воскресенье, 25.11.2012, 20:16 |
Сообщение № 13

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

1. Для того, чтобы код Sub Protect_for_User_Non_for_VBA() сработал, его надо запустить. Это можно делать и вручную, но лучше поместить код в модуль «ЭтаКнига» на событие Private Sub Workbook_Open().
2. Поскольку этот код не выполнен, в макросе возникает ошибка, и макрос останавливается. Но к тому времени уже выполнена команда Application.EnableEvents = False, отключающая обработку событий в приложении. Для того, чтобы обработка событий заработала, нужно выполнить код Application.EnableEvents = True.
3. Макрос для light26 выполнял несколько другие функции. В вашем случае нет необходимости отслеживать, что написано в ячейке, т.е. массив и проверка того, что записано в той или иной ячейке не требуется. Возьмите любой из предложенных вам вариантов, и не усложняйте себе жизнь


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RANВоскресенье, 25.11.2012, 20:17

 

Ответить

vovin_fm

Дата: Четверг, 25.04.2013, 23:43 |
Сообщение № 14

Группа: Пользователи

Ранг: Прохожий

Сообщений: 3


Репутация:

0

±

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


2016

Цитата (RAN)

[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then Exit Sub
If Not Intersect(Target, Columns(1)) Is Nothing Then
If Len(Target) Then Target(, 2) = Date Else Target(, 2) = «»
End If
End Sub

[/vba]

RAN,

Добрый вечер! Нужна помощь!
Следуя Вашему примеру попытался сделать автоматическое отображения даты в столбце «B» при изменение параметра списка в столбце «D» в каждой строке, но ничего не получилось! Необходимо чтобы дата менялась на всю возможную длину столбца, т.к. к этому списку постоянно добавляется новая информация. (Моё первое общение с VBA)
Заранее спасибо!!

 

Ответить

RAN

Дата: Пятница, 26.04.2013, 00:28 |
Сообщение № 15

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Count <> 1 Then Exit Sub
     If Not Intersect(Target, Columns(4)) Is Nothing Then
         If Len(Target) Then Target.Offset(, -2) = Date Else Target.Offset(, -2) = «»
     End If
End Sub

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

oxid

Дата: Четверг, 22.08.2013, 17:19 |
Сообщение № 16

Группа: Пользователи

Ранг: Прохожий

Сообщений: 1


Репутация:

0

±

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


Excel 2010

Привет.
Ребят, помоги те пожалуйста, я в VBA совсем не алё, пользуюсь готовыми решениями, подгоняя их по своим требованиям.
Способ о котором идет речь в этой ветке, подходит к моим требованиям, но разобраться с ним не могу никак, голову уже сломал.

Суть:
— При смене статуса (оранж. поле) из выпадающего списка, хочу чтобы ставилось время смены статуса в соответствующем поле.
— Та же ситуация с Объектами (синее поле), при выборе Объекта, хочу чтобы проставлялось время его выбора в горизонте в соответствующем поле.

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

Помогите плиз, вот надо сделать велосипед их этого файл и превратить в конфетку.

Как реализовать проставление даты при выборе статусов из выпадающего списка?

Сообщение отредактировал oxidЧетверг, 22.08.2013, 17:19

 

Ответить

RAN

Дата: Пятница, 23.08.2013, 00:17 |
Сообщение № 17

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Но есть сложность, в файле уже работает один макрос

Никакой ложности здесь нет.

При смене статуса (оранж. поле) из выпадающего списка, хочу чтобы

Ежели-бы вы потрудились сделать эти списки…
А на нет и …


Быть или не быть, вот в чем загвоздка!

 

Ответить

Здравствуйте!
Описание проблемы: каждый час с прибора снимаются показания и заносятся в таблицу excel.
Нужно проверить, что данные действительно были внесены в это время, а не заполнены в конце рабочего дня по памяти. Т.е. при изменении ячейки в соседней ячейке должны записываться текущая дата и время с помощью функции ТДАТА.
Во вложении: просто формат таблицы для ввода данных.
Заранее спасибо! :)



добавляет текущюю дату и время в ячейку столбца В при вводе информации в ячейку столбца А

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
        If Not Intersect(Target, Range(«A2:A1000»)) Is Nothing Then
            With Target(1, 2)
                .Value = Now
                .EntireColumn.AutoFit
            End With
        End If
End Sub


sklu, спасибо большое, это то, что нужно. :)


Мож кому пригодится, я так сделал:

Private Sub Worksheet_Change(ByVal Target As Range)
    ST = Target.Row        ‘ № строки
    KL = Target.Column   ‘ № колонки
    If KL = 1 And ST > 4 And ST < 26 Then
       Cells(ST, 2) = Date + Time 
    End If
End Sub

(ограничено строками с 5 по 25)

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


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

В этой статье будут рассказываться о способах получения времени создания и времени последнего изменения текущей информации книги, а также вставки времени создания и времени последнего изменения текущей информации книги в ячейки 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% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

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

Именно по этой причине мы решили представить статью, которая объяснит шаг за шагом как сохранить дату и время изменения данных или записей ячеек в Excel.

Вы можете не знать, что базы данных Excel являются часто Мизес à Jour разными пользователями. По этой причине необходимо следить за различными модификациями или модификациями, внесенными в данные в ячейках Excel . Итак, мы можем узнать о последнем обновлении записи.

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

Так что вы можете   сохранять дату и время изменения данных или записей ячеек в Excel , мы будем использовать событие Worksheet_Change. С его помощью мы можем запускать код VBA в любое время, когда любая ячейка в нашем листе подвергается модификации. Таким образом, мы можем сохранить изменения, внесенные в нашу базу данных.

Предположим, у нас есть таблица, которая показывает четыре столбца, в которых у нас есть в столбце To name, в столбце B — фамилия, в столбце C — телефон. И у нас будет последнее обновление в столбце D с количеством ячеек X. В этом столбце D я хочу ввести запись измененной даты и времени в одну из ячеек.

Какой бы столбец вы ни изменили, в столбце D автоматически будут отображаться дата и время последнего сохраненного изменения. Чтобы выполнить операцию записи дата и время изменения данных или записей ячеек в Excel . Это нужно для перехода в редактор VBA, создания кода или создать макрос , для этого идем наверх и делаем клип на вкладке «Разработчик», затем в VBA.

Ввод кода VBA для сохранения даты и времени

Теперь с левой стороны мы собираемся позиционировать себя на листе, который содержит нашу таблицу, мы делаем правый клип, и в появившихся опциях мы должны выбрать или создать клип в представлении. код . Теперь с правой стороны нам нужно ввести следующий код:

Дополнительная таблица Private_Change (значение ByVal как диапазон)

It Target.Column <4 Тогда

Ячейки (Target. Row, 4). Значение = Сейчас

Конец да

End Sub

Когда это событие сработало, мы сравним ячейку измененного столбца, используя свойство Target. Столбец.

Если параметры в этом столбце меньше 4, текущее время и дата будут вставлены с помощью функции «Сейчас». Вы должны заметить, что время и дата вставлены в столбец 4 и в ячейку, которая была изменена, и это будет достигнуто с помощью свойства Target.Row.

Следующий шаг, который мы собираемся выполнить, — это проверить, работает ли этот код, для этого мы собираемся минимизировать это окно. Далее мы перейдем к листу, на котором расположена наша таблица, и внесем изменения в любую ячейку и столбец. Когда вы это сделаете, дата и время изменения должны появиться в столбце D и в той же строке, где возникло изменение.

Если, наоборот, вы вводите новое имя в поле, в столбце D той же строки будут отображаться время и дата, когда вы сделали запись. И таким простым способом, используя VBA, мы смогли изучить новую функцию Excel. Где ты можешь сохранить дату и время изменения данных или записей ячеек в Excel.

Ezoic

Хитрости »

1 Май 2011              53756 просмотров


Запись изменений на листе в примечания

Иногда необходимо вести лог изменений в ячейках. Просто чтобы видеть как изменялась информация в ячейке. Например, это может пригодиться при ведении истории заказа, когда статус заказа записывается в одной ячейке. Сначала «В обработке», далее «Вывоз со склада», потом «Доставка» и т.п.
Приведенный ниже код создает примечание в ячейке, если её значение было изменено. В примечание заноситься информация о том, что было занесено в ячейку и когда это было занесено(т.е. дата и время изменения). Если примечание в ячейке уже есть, то в имеющееся примечание допишется информация об изменениях.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    'отслеживаем изменения только в диапазоне "E14:E50" - т.е. только статус
    '(изменить адрес, если надо отслеживать другие ячейки)
    If Intersect(Target, Me.Range("E14:E50")) Is Nothing Then Exit Sub
    Dim oComment As Comment
    On Error Resume Next
    Set oComment = Target.Comment
    If oComment Is Nothing Then
        Target.AddComment Target.Text & " " & Format(Now, "dd.mm.yy HH:MM")
    Else
        oComment.Text oComment.Text & Chr(10) & Target.Text & " " & Format(Now, "dd.mm.yy HH:MM")
    End If
End Sub

Код необходимо поместить в модуль листа(щелкнуть правой кнопкой мыши по ярлычку листа —Исходный текст), изменения на котором необходимо отследить. Подробнее о модулях.
Следует учитывать, что код сработает только если данные были изменены вручную и для одной ячейки, а не для нескольких. Если скопировать в вставить несколько ячеек, примечание будет создано только для одной, а текст примечания может отличаться от ожидаемого. Если изменения производятся посредством вычисления формул — код не сработает вообще.
Изменения отслеживаются исключительно для ячеек A17:I30. Чтобы изменить ячейки, в которых необходимо отслеживать изменения, необходимо в строке:
If Intersect(Target, Me.Range(«E14:E50»)) Is Nothing Then Exit Sub
заменить адрес «E14:E50» на адрес нужных ячеек.

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

Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim v, vv, sf, sa As String
    'отслеживаем изменения только в диапазоне "A17:I30"(изменить адрес, если надо отслеживать другие ячейки)
    If Intersect(Target, Me.Range("A17:I30")) Is Nothing Then Exit Sub
    'если изменено более одной ячейки - завершаем выполнение во избежание ошибок
    If Target.Count > 1 Then Exit Sub
    'получаем новое значение
    v = Target.Value
    sf = Target.Formula
    'запоминаем адрес текущей выделенной ячейки
    'т.к. после Undo она изменится и надо будет вернуть
    sa = Selection.Address
    'получаем старое значение
    With Application
        .EnableEvents = 0
        .Undo
        vv = Target.Value 'старое значение
        'возвращаем последнее записанное значение
        Target.Formula = sf
        Me.Range(sa).Select
        .EnableEvents = 1
    End With
    'сравниваем новое значение с прежним
    If CStr(vv) <> CStr(v) Then
        'если значения различаются - создаем или дописываем примечание
        On Error Resume Next
        Dim oComment As Comment
        Set oComment = Target.Comment
        If oComment Is Nothing Then 'примечания еще нет - создаем и записываем информацию об изменениях
            Set oComment = Target.AddComment(CreateObject("wscript.network").UserName & ":" & Chr(10) & "было: " & vv & "; стало: " & v & "; Дата: " & Format(Now, "dd.mm.yy HH:MM"))
        Else 'уже есть примечание - дописываем информацию об изменениях
            oComment.Text oComment.Text & Chr(10) & CreateObject("wscript.network").UserName & ":" & Chr(10) & "было: " & vv & "; стало: " & v & "; Дата: " & Format(Now, "dd.mm.yy HH:MM")
        End If
        oComment.Shape.TextFrame.AutoSize = True
    End If
End Sub

Код так же как и предыдущий размещается в модуле листа(правая кнопка мыши по ярлычку листа —Исходный текст), изменения в котором необходимо отслеживать.
Так же в данном коде помимо старого значения в примечание так же записываемся имя пользователя, изменившего значение, новое значение, дата/время изменения. Изменения отслеживаются исключительно для ячеек A17:I30. Чтобы изменить ячейки, в которых необходимо отслеживать изменения, необходимо в строке:
If Intersect(Target, Me.Range(«A17:I30»)) Is Nothing Then Exit Sub
заменить адрес «A17:I30» на адрес нужных ячеек.
Хочу обратить внимание, что при изменении нескольких ячеек сразу код не будет выполняться, т.к. ячеек может быть много и их значения могут просто не уместиться в примечания. Если нужны отслеживания множества ячеек сразу, то имеет смысл ознакомиться со статьей: Ведение журнала сделанных в книге изменений

Скачать пример

  История изменений ячеек в примечаниях (72,5 KiB, 3 734 скачиваний)

Так же см.:
Ведение журнала сделанных в книге изменений
Выделение сделанных изменений


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Like this post? Please share to your friends:
  • Все буквы прописью excel
  • Все буквы заглавные в excel горячие клавиши
  • Все буквы в кучу word
  • Все бланки налоговой отчетности в excel
  • Все библиотеки для excel 2010