Если вы хотите обрабатывать некоторые данные в течение ограниченного времени, вы можете вставить таймер обратного отсчета в свой рабочий лист данных, и по окончании обратного отсчета времени появится всплывающее диалоговое окно, напоминающее вам. Здесь я расскажу вам код VBA для вставки таймера обратного отсчета в Excel.
Вставить таймер обратного отсчета в Excel
Вставить таймер обратного отсчета в Excel
В Excel нельзя отсчитывать время, но вы можете скопировать следующий код VBA, чтобы помочь отсчитать время.
1. Выберите ячейку и отформатируйте ее как форматирование времени, щелкнув ячейку правой кнопкой мыши и выбрав Формат ячеек, затем в диалоговом окне, нажав Продолжительность и выбор 13: 30: 55 в Тип список, при последнем нажатии OK для выхода из этого диалога. Смотрите скриншот:
2. Введите время, которое вы хотите отсчитать, в ячейку форматирования. Смотрите скриншот:
3. Нажмите Alt + F11 ключи для открытия Microsoft Visual Basic для приложений окно.
4. Нажмите Вставить > Модули а затем скопируйте следующий VBA в новое окно.
VBA: таймер обратного отсчета.
Dim gCount As Date
'Updateby20140925
Sub Timer()
gCount = Now + TimeValue("00:00:01")
Application.OnTime gCount, "ResetTime"
End Sub
Sub ResetTime()
Dim xRng As Range
Set xRng = Application.ActiveSheet.Range("E1")
xRng.Value = xRng.Value - TimeSerial(0, 0, 1)
If xRng.Value <= 0 Then
MsgBox "Countdown complete."
Exit Sub
End If
Call Timer
End Sub
Функции: E1 в приведенном выше коде указывает ячейку времени, которую вы вводите на шаге 2.
5. Нажмите Run или нажмите F5 для запуска таймера обратного отсчета. Теперь время отсчитывается.
6. И когда обратный отсчет закончится, всплывающее диалоговое окно напомнит вам.
Функции: Вы не можете остановить обратный отсчет, когда он запущен, за исключением закрытия книги.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (15)
Оценок пока нет. Оцените первым!
How to create a countdown timer in Excel.
This allows you to display a timer in whatever cell you want and it will count down until it reaches zero. I also included a method to stop or pause the timer.
To create the countdown timer, a macro will be used. However, this tutorial does not require any previous knowledge of macros or VBA in Excel.
If you are familiar with VBA, you can just copy the full macro code from below and skip everything else.
Sections:
Make the Countdown Timer
Add a Stop or Pause Feature to the Timer
Add Buttons in the Spreadsheet to Control the Timer
Countdown Timer Full Macro Code
Notes
Make the Countdown Timer
To make a countdown timer we need to install a macro into Excel, don’t worry though, that’s easy. Before that though, we need to setup a cell in the spreadsheet to hold the timer.
- Go to the cell that you want to contain the timer. Right-click that cell > click Format Cells…
- Go to the Number tab and then to the Time category and select 13:30:55 from the section on the right. Then hit OK to get back to Excel.
- You will now have a cell formatted like this:
- Double-click the cell and it will have an annoying 12:00:00 AM time by default, but just ignore that.
- Type whatever time you want into this cell. The first set of zeros is for hours, the second set for minutes, and the third set for seconds. Delete what appears in the cell by default and type your number like this:
Hit enter and you get this:
The time in the formula bar will look weird but don’t pay attention to that; it doesn’t matter. - Now, we add the VBA code and install the macro. To do this hit Alt + F11 to go to the VBA Editor window and then look to the menu at the top of the window and go to Insert > Module
- A window will open like this:
Paste the macro into this window.
Here is the macro code:Sub timer() interval = Now + TimeValue("00:00:01") If Range("A1").Value = 0 Then Exit Sub Range("A1") = Range("A1") - TimeValue("00:00:01") Application.OnTime interval, "timer" End Sub
It should now look something like this:
- Change the code to work for you. Everywhere that you see cell A1 you need to change that to the cell that contains the timer in your worksheet. So, if you put the timer in cell B6, then replace every instance of A1 with B6 in the code above.
- Hit Alt + F11 to go back to Excel and then hit Alt + F8, select the macro timer from the window that opened, hit the Run button, and watch the time count down.
When the timer gets to zero, it will stop.
Add a Stop or Pause Feature to the Timer
Now that we have a working timer, it’s a good idea to be able to stop it.
To do this, we need to add just a couple things to our macro.
- Hit Alt + F11 and then go to the module that you added in the last section. If it isn’t already open, it should be listed in the left pane of the window and it will be called Module1, double-click that.
- Once you see the macro, add this line of code above it:
Public interval As Date
- Now, below all of the code, under where it says End Sub, add this macro:
Sub stop_timer() Application.OnTime EarliestTime:=interval, Procedure:="timer", Schedule:=False End Sub
- Go back to Excel, Alt + F11 and then hit Alt + F8. In the window that opens click timer and hit the Run button.
- The timer should now be running. To stop it, hit Alt + F8 again and select stop_timer and click the Run button.
That’s all there is to it!
Now, always going to the Macro window, Alt + F8, can be really annoying, so let’s make these macros run from some buttons in the worksheet.
Add Buttons in the Spreadsheet to Control the Timer
This is a simple feature once you’ve got working macros.
Simply go to the Insert menu and select Shapes and then select a rounded rectangle.
Adjust the size of the buttons and add some text to them.
Right-click the first button and click Assign Macro…
In the window that opens, click timer and hit OK.
Repeat that for the next button, obviously selecting stop_timer this time.
That’s it!
If you want to learn more about adding buttons to Excel and making them run macros, check out this tutorial:
Attach a Macro to a Button in Excel
Countdown Timer Full Macro Code
Here is the complete macro code needed for this timer:
Public interval As Date
Sub timer()
interval = Now + TimeValue("00:00:01")
If Range("A1").Value = 0 Then Exit Sub
Range("A1") = Range("A1") - TimeValue("00:00:01")
Application.OnTime interval, "timer"
End Sub
Sub stop_timer()
Application.OnTime EarliestTime:=interval, Procedure:="timer", Schedule:=False
End Sub
This code goes into a regular module.
Notes
When you first start the timer it may seem to count fast for the first couple seconds but it should quickly correct itself.
To make this macro run when the Excel workbook is opened, read these tutorials:
How to Run a Macro Automatically when Excel is Opened
How to Run a Macro from Another Macro
Make sure to download the spreadsheet attached to this tutorial so you can see everything in Excel and more easily copy/paste what you need.
Similar Content on TeachExcel
Run a Macro at Set Intervals in Excel
Tutorial: Run a macro every 30 seconds, 1 minute, 10 minutes, 1 hour, etc.; this method allows you t…
Years, Months, Days Between two dates in Excel
Tutorial: I have found a rather convoluted method to Calculate the Number of Years, Months and Days …
Turn Off the Formatting Window Popup in Excel
Tutorial:
How to stop the annoying formatting window, the «Mini Toolbar» from appearing when you se…
Format a Date to Show Only the Day of Week in Excel
Tutorial: How to format a Date so that only the day of the week is visible from that date.
Result:
…
Manually Calculate Formulas and Functions in Excel
Tutorial:
How to force Excel to recalculate all formulas and functions without editing or entering …
Idiot-Proof Forms in Excel — Part 1 — Formatting
Tutorial:
Forms Course
This tutorial shows you how to create a form within a regular worksheet in E…
Subscribe for Weekly Tutorials
BONUS: subscribe now to download our Top Tutorials Ebook!
Сетевые администраторы ранее учили вас создавать таймер обратного отсчета в слайдах PowerPoint с помощью других эффектов движения. А с помощью Excel мы можем полностью создать таймер обратного отсчета с простой реализацией с помощью кода VBA.
Соответственно, пользователь выбирает тип формата времени для отображения, а затем вводит код VBA для проведения обратного отсчета. При запуске кода часы в Excel автоматически обратный отсчет, и вы увидите изменение времени. Когда время обратного отсчета истекает, Excel отправляет пользователю уведомление. В следующей статье рассказывается, как вставить таймер обратного отсчета в Excel.
- Как установить VBA в Excel
- Как взломать пароль VBA в Excel
- Как создать мигающий текст в Excel
- Как автоматически выделять строки и столбцы в Excel
Шаг 1:
Сначала мы выбираем пустую ячейку, чтобы ввести время обратного отсчета, затем щелкаем правой кнопкой мыши и выбираем Формат ячеек.
Отобразите интерфейс выбора формата для ячейки. Здесь щелкните вкладку «Число», затем выберите формат ячейки «Время», затем посмотрите вправо, чтобы выбрать тип отображения времени. Если вы хотите отображать часы по вьетнамскому стилю, выберите «Местный» как вьетнамский. Нажмите OK ниже, чтобы сохранить.
Шаг 2:
Теперь мы вводим количество времени, которое хотим отсчитать, час за часом, минуту за минутой или секунду по желанию. Отрегулируйте формат окна времени, цвет, стиль шрифта, шрифт, размер текста, чтобы сделать ячейку более заметной.
Шаг 3:
Создав временную шкалу обратного отсчета, щелкните вкладку Разработчик, а затем щелкните Visual Basic, чтобы открыть редактор кода VBA.
Отобразите новый интерфейс, нажмите кнопку «Вставить», выберите модуль, чтобы открыть интерфейс и ввести код VBA.
Теперь покажите интерфейс, чтобы мы могли ввести следующий код VBA в интерфейс.
Dim gCount As Date ‘Updateby20140925 Sub Timer () gCount = Now + TimeValue («00:00:01») Application.OnTime gCount, «ResetTime» End Sub Sub ResetTime () Dim xRng As Range Set xRng = Application.ActiveSheet.Range («D1») xRng.Value = xRng.Value — TimeSerial (0, 0, 1) Если xRng.Value
После завершения щелкните значок «Выполнить», чтобы запустить код, как показано.
Закройте интерфейс и по результатам мы увидим автоматический обратный отсчет часов. Мы можем изменить время обратного отсчета по своему желанию, и часы не будут изменены и будут продолжать обратный отсчет, пока таймер не истечет.
Шаг 4:
Чтобы исправить эти часы в рабочем интерфейсе Excel, щелкните поле под окном часов, выберите вкладку «Вид», выберите «Закрепить панели» и нажмите «Закрепить панели», чтобы закрепить строку.
Поэтому, когда вы прокручиваете содержимое ниже, таймер обратного отсчета всегда отображается вверху.
Наконец, когда обратный отсчет закончится, интерфейс Excel отобразит сообщение о завершении, как показано ниже.
Всего за несколько простых шагов мы создали таймер обратного отсчета в Excel. Время обратного отсчета не фиксировано, и вы можете изменить время по своему усмотрению, но оно должно быть в установленном формате времени.
Желаю успешной реализации!
Не помню кто из великих сказал… И не помню что. Но в процессе разработки vba-приложений время от времени возникает необходимость использовать таймер. «Из коробки» решения, к сожалению, нет.
Application.OnTime?
Данный метод отложенных вызовов сам по себe решает проблему, но лишь один раз. В том смысле, что таймер срабатывает лишь единожды — указать переодичность вызовов, увы, нельзя.
Application.OnTime + рекурсия?
Очевидно, что в конце необходимой процедуры можно вызывать её же с помощью данного метода, но не менее очевидны и недостатки этого решения — отсутствие достаточного контроля и неудобство вызова:
- не таймер вызывает действие;
- чтобы остановить цикл придётся объявлять глобальную переменную;
- добавление «костыля» в тело отдельно взятой процедуры. Если в следующий раз будет нужно вызвать по таймеру другую — то и в неё придётся переносить данный «костыль».
Evaluate в помощь?
Написать свой класс и вызывать внутри необходимую процедуру с помощью Application.Evaluate. Особо упорные в стремлении создать приемлемый метод вызова таймера доходят до этого решения и упираются в стран/ш/ный баг, отловить который достаточно сложно: udf-функция переданная в переменной будет вызываться каждый раз
по два(!) раза.
Потому что гладилус
Способ обойти этот баг пока найден лишь один:
ActiveSheet.Evaluate "0+" & nameOfProcedure
Решение
Для простоты вызова написан не класс, а метод. Достаточно указать интервал, имя вызываемой процедуры и, опционально, кол-во необходимых вызовов:
StartTimer 60, "CalculateTotal()", 30 'вызов CalculateTotal() каждую минуту в течении получаса.
StopTimer 'остановка таймера
модуль
Option Explicit
Private Type Timer
interval As Long
procedure As String
times As Long
enabled As Boolean
initialized As Boolean
ticks As Long
End Type
Private Timer As Timer
Public Sub StartTimer(ByRef interval As Long, _
ByRef procedure As String, _
Optional ByRef times As Long)
With Timer
.interval = interval
.procedure = procedure
.times = times
.enabled = True
.initialized = False
.ticks = 0
End With
InvokeTimer
End Sub
Public Sub StopTimer()
Timer.enabled = False
End Sub
Private Function InvokeTimer()
If Timer.ticks > Timer.times And Not Timer.times = 0 Then StopTimer
If Not Timer.enabled Then Exit Function
If Timer.initialized Then
ActiveSheet.Evaluate "0+" & Timer.procedure
Else
Timer.initialized = True
End If
Timer.ticks = Timer.ticks + 1
Application.OnTime Now + 1 / 86400 * Timer.interval, "InvokeTimer"
End Function
Применение функции Timer в VBA Excel для приостановки выполнения приложений и определения времени работы процедур. Примеры использования.
Timer – это функция без аргументов, которая возвращает количество секунд, прошедших после полночи. Значение типа Single.
На сайте разработчика сказано, что в Windows функция Timer возвращает дробные части секунды. О порядке дробной части там информации нет. Попробуем выяснить это сами, запустив в редакторе VBA Excel подпрограмму со строкой
MsgBox «Timer = « & Timer |
Исходя из результата, отображенного в информационном окне MsgBox, будем считать, что функция Timer возвращает сотые доли секунды. Во время экспериментов с процедурой Vremya из Примера 2 результат вычисления разницы между двумя значениями функции Timer достигал шести знаков после запятой, и один раз – семи.
Примеры использования в VBA Excel
Пример 1
Присвоение значения функции Timer переменной:
Пример 2
Код VBA Excel для приостановки приложений:
Dim Start As Single, Pause As Single Start = Timer Pause = 0.5 Do While Timer < Start + Pause DoEvents Loop |
- Start – переменная, в которую записывается первоначальное значение таймера.
- Pause – время в секундах (до сотых значений), на которое следует приостановить программу.
Функция DoEvents во время выполнения цикла передает управление операционной системе для обработки других событий. По рекомендации разработчиков не следует использовать DoEvents в тех случаях, когда
- приостановленная процедура может быть запущена повторно из другой части вашего кода;
- другие приложения могут обратиться к приостановленной процедуре.
Код для приостановки приложений можно использовать как отдельную подпрограмму, вставляя ее имя с указанием интервала в нужные места других процедур:
Sub StopSub(Pause As Single) Dim Start As Single Start = Timer Do While Timer < Start + Pause DoEvents Loop End Sub |
Проверяем работоспособность подпрограммы StopSub:
Sub Vremya() Dim x As Single x = Timer Call StopSub (3) MsgBox Timer — x End Sub |
Точный или почти точный результат будет только при использовании в качестве аргумента целых секунд, в том числе и в примере кода, предложенного разработчиком.
Такой способ приостановки приложений можно использовать в VBA Excel при создании бегущей строки.
Пример 3
Функцию Timer можно использовать для замера времени работы процедуры. Мы ее уже использовали для определения времени выполнения подпрограммы StopSub:
Sub Vremya() Dim x As Single x = Timer Call MySub MsgBox Timer — x End Sub |
Замените MySub на имя вашей подпрограммы и запустите код в редакторе VBA Excel. Информационное окно MsgBox покажет время работы процедуры.