Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Секундомер в ячейке рабочего листа

    Реализация простого секундомера в ячейке рабочего листа с помощью кода VBA Excel. Примеры с использованием метода Application.OnTime.

    Секундомер в ячейке Excel

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

    Внешний вид простого секундомера в ячейке рабочего листа в состоянии «включен»:

    Секундомер в ячейке рабочего листа Excel

    Для включения и выключения секундомера используется одна кнопка из коллекции «Элементы ActiveX», у которой в зависимости от состояния таймера меняется название (Caption).

    Код секундомера располагается в модуле листа (в примерах – «Лист4»), результат выводится в ячейку «B2».

    Код секундомера 1

    На рабочий лист «Лист4» добавлена кнопка CommandButton1 из коллекции «Элементы ActiveX». Ее видимое наименование (Caption) вручную изменено на «Старт». При первом клике наименование кнопки программным способом изменяется на «Стоп», ячейке «B2» присваивается пустая строка и запускается секундомер. При повторном клике секундомер останавливается, а наименование кнопки меняется на «Старт».

    Код секундомера 2

    В этом примере используются две процедуры VBA Excel с методом Application.OnTime, которые по очереди запускают друг друга. Этот код приведен исключительно для ознакомления, что так тоже можно.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    3 комментария для “VBA Excel. Секундомер в ячейке рабочего листа”

    1. Как сделать, чтобы работа секундомера не прекращалась при вводе данных в другие ячейки этого листа? Как сделать сброс отдельной клавишей? Всё относится к первому варианту.

    2. Алексей

      Искал в интернете примеры реализации секундомера и случайно попал на ваш сайт. Был приятно удивлен!!!
      Я приступаю к изучению VBA с нуля, жизнь заставляет, мне 58 лет. Если у вас есть такая возможность, помогите пожалуйста написать код для секундомера с возможностью нескольких остановок и последующих запусков во время некоторого эксперимента, который длится к примеру 100 секунд. Время секундомера или таймера будет в дальнейшем управлять неким виртуальным физическим процессом. По окончании эксперимента секундомер должен остановиться на значении 100 секунд, суммируя все активные периоды в течении эксперимента, в течение пауз у экспериментатора есть возможность осмыслить суть происходящего. Двойным кликом на кнопке Старт/Стоп хотелось бы сбрасывать значение в ноль, чтобы можно было начать некий эксперимент заново. Эксперимент проводится на математической модели виртуального учебного лабораторного стенда, реализованного штатными средствами Excel (моделируется некий физический процесс). Секундомер или таймер должен отсчитывать также и милисекунды (как я понимаю Timer использует системное время компьютера).
      Нашел такой код:

      В ячейку А4 вводим формулу =A3-A2
      Время в ячейке A4 начинает нарастать сразу после клика по кнопке и останавливается после следующего клика. Следующий клик по кнопке обнуляет значение и запускает счет заново. Это не совсем то, что требуется, но хоть что-то.
      Заранее спасибо, очень рассчитываю на вашу помощь.

    3. Установил Ваш секундомер. Но при защите листа кнопка «Старт» нажимается, а секундомер не включается. Со всех нужных ячеек ( показания секундомера; ячейку кнопки «Старт»; с самой кнопки «Старт» — через «Разработчик», «режим конструктор», «свойства») тоже снял защиту. Помогите пожалуйста, как запустить секундомер при защите листа.

    Обсуждение закрыто.