Часы в ячейке Excel
Приветствую, уважаемый читатель!
Сегодня темой поста будет вопрос одного из подписчиков: "Как вставить в ячейку таблицы время?" Вопрос требует некоторого пояснения. Нам требуются полноценные часы, которые будут отображать текущее время на компьютере.
Пришедшие поначалу в голову формулы СЕГОДНЯ() , ДАТА() и ВРЕМЯ() здесь не помогут, так как они будут оставлять "отпечатки" сегодняшних дней, дат, часов и секунд на момент ввода формулы. Также формулы не поддерживают автоматическое обновление.
Выход один - будем использовать макросы.
Пройдёмся по этапам создания нашей процедуры:
- Создадим новую книгу в Excel;
- На вкладке "Разработчик" жмём кнопку VisualBasic;
- Выполним команды Insert -> Module.
Появится пустое окно куда нужно поместить следующий макрос:
Sub UpdateTime()
Dim varNextCall As Variant
'записываем в ячейку текущее время
Cells(1, 1).Value = Now
'записываем в varNextCall время, когда вызвать макрос в следующий раз (через 1 секунду)
varNextCall = TimeSerial(Hour(Now), Minute(Now), Second(Now) +1)
'уведомляем программу в вызове макроса
Application.Ontime varNextCall, "UpdateTime"
End Sub
Мы создали макрос записи обновления времени, который поместит в ячейку А1 текущее время, его можно будет вызвать сочетанием Alt+F8 или щёлкнуть по кнопке "Макросы".
Следующим шагом будет сохранение книги. Обязательно сохранить книгу с поддержкой макросов (.xlsm)!
После выполнения макроса увидим вот такой результат:
В ячейке отображается дата и время (по компьютеру), в строчке формул также добавляются секунды для более удобного просмотра.
В этом примере есть также один минус - как только мы закроем книгу, работа макроса прекратится. Для того, чтобы избежать этого мы прикрутим к макросу автоматический старт (как и в случае с КУРСАМИ ВАЛЮТ).
- Щёлкаем кнопку VisualBasic;
- В области Project два раза кликаем строчку "Эта книга";
- В появившемся окне в поле "Object" выбираем "Workbook" и в поле "Procedure" название процедуры "Open";
- Между появившихся строчек вводим вызов нашего макроса - Call UpdateTime.
Макрос можно переместить в любую ячейку. Теперь даже при закрытии/открытии у нас будет точное время!
Буду рад всем оставленным отзывам и комментариям! Ссылка на файл примера ниже:
Если остались вопросы посмотрите обучающее видео: