Как сделать секундомер в excel?

Microsoft Excel

трюки • приёмы • решения

Как в VBA сделать секундомер и вывести информацию о текущем времени

Перейдем теперь к следующей, уже более сложной разработке. Итак, на рабочем листе необходимо создать интерфейс, показанный на рис. 1.37. Здесь обозначения Часы, Минуты и Секунды представляют элементы управления «Надпись» и являются просто поясняющими надписями рядом с соответствующими текстовыми окнами, в которые выводится информация о времени. Вывод этих сведений инициирует щелчок на кнопке Отобразить время. Фактически таким образом мы реализуем на рабочем листе вариант электронных часов. Фрагмент Секундомер (это слово набрано просто в ячейке на листе) позволяет в тех же окнах реализовать функции секундомера. Работа секундомера запускается по нажатию кнопки Старт. В этом случае текстовое окно для отображения текущего часа очищается, а информация в окнах, отводимых для минут и секунд, начинает обновляться.

Если пользователю требуется остановить отсчет времени, то он должен щелкнуть на кнопке Стоп, после чего обновление времени останавливается. В табл. 1.1 указаны имена и тины объектов, расположенных на рис. 1.37.

Таблица 1.1. Имена объектов на рис.1.37

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

Рис. 1.37. Реализация часов и секундомера

В редакторе Visual Basic существует общая область, где можно описывать переменные (рис. 1.38), которые должны быть известны внутри нескольких процедур. Строка программы в окне, представленном на рис. 1.38, означает следующее:

  • Dim определить (это ключевое слово Visual Basic);
  • Flag имя переменной;
  • As Integer определение данной переменной как целого числа (значениями переменной могут быть только целые числа).

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

Рис. 1.38. Определение переменной в общей области

После такого вступительного комментария можно привести процедуру обработки щелчка на кнопке Отобразить время (листинг 1.18).

‘ Листинг 1.18. Процедура, выполняемая по щелчку на кнопке Отобразить время Private Sub Vrema_Click() Flag = 0 While Flag = 0 Th.Text = Format(Now(), «hh») Tm.Text = Format(Now(), «nn») Ts.Text = Format(Now(), «ss») DoEvents Wend End Sub

Теперь разберем строки этой процедуры. Во-первых, здесь используется оператор цикла, который начинается со строки While Flag = 0 и заканчивается строкой Wend . После ключевого слова While располагается условие, и если оно выполняется, то выполняются все строки программы вплоть до Wend . Затем управление опять передается на строку While , и если условие вновь выполняется, то все повторяется. Если же условие не выполняется, то управление передается на первую строку после Wend .

Читать еще:  Как сделать на рабочем столе два окна excel одновременно?

В строке Th.Text = Format(Now(), «hh») используются несколько внутренних функций Visual Basic. Так, функция Now() не требует входных параметров и просто выдаст текущую дату и время. В свою очередь, другая внутренняя функция, Format , позволяет задать определенный формат для выводимой информации. Если нам необходимо выделить только текущий час, то в качестве второго аргумента функции Format мы должны задать «hh». Соответственно в следующих двух строках из текущего времени выделяются минуты и секунды.

Далее по тексту располагается внутренняя процедура Visual Basic DoEvents , которая позволяет переключаться из выполняемого программного кода на обработку других событий. В данном случае нам необходимо по щелчку на кнопке Стоп установить значение переменной Flag в 1, что реализуется в процедуре, приведенной в листинге 1.19.

‘ Листинг 1.19. Процедура обработки щелчка на кнопке Стоп Private Sub StopSec_Click() Flag = 1 End Sub

Таким образом, мы обеспечили вывод текущего времени и его остановку. Что касается остановки, то она скорее требуется для секундомера. И теперь наша задача заключается в реализации его функциональности. В листинге 1.20 приведена процедура, которая выполняется по щелчку на кнопке Старт, что позволяет включить секундомер.

‘ Листинг 1.20. Обработка щелчка на кнопке Старт Private Sub Start_Click() Th.Text = «» Tm.Text = 0 Ts.Text = 0 Flag В = 0 ‘ Получение значения секунд Sec = Format(Now(), «ss») ‘ В переменной Shet организуем счетчик Shet = 0 While Flag = 0 Sec2 = Format(Now(), «ss») If Sec <> Sec2 Then ‘ При изменении секунд Shet = Shet + 1 Sec = Sec2 ‘ Получение минут ChetMins = Shet 60 ‘ Выделение секунд ChetSecs = Shet — ChetMins * 60 Tm.Text = ChetMins Ts.Text = ChetSecs End If DoEvents Wend End Sub

Здесь мы использовали операцию целочисленного деления () для получения числа прошедших минут. Программа для работы секундомера готова, и на рис. 1.39 показан результат ее работы.

Рис. 1.39. Пример работы секундомера

Познакомимся на практике в рамках данного примера со свойством, которое определяет доступ к элементам управления. Как мы уже знаем, у элементов управления имеется свойство Enabled. Когда для этого свойства установлено значение True, доступ к данному элементу разрешен, а в противном случае (при значении False) доступ запрещен.

Изменим предыдущую разработку следующим образом. В окне свойств для кнопок Старт и Отобразить время значение свойства Enabled установим True, а для кнопки Стоп в качестве значения этого свойства выберем False. В результате в начале работы для действий пользователя доступна кнопка, позволяющая отобразить время, и кнопка секундомера, а кнопка Стоп недоступна. Теперь при щелчке на кнопке Старт доступ к кнопке Стоп должен разрешаться, кнопка Старт должна стать недоступной. В листинге 1.21 показана модифицированная процедура обработки щелчка па кнопке Стоп, которая затрагивает свойства двух кнопок, относящихся к секундомеру.

‘ Листинг 1.21. Модифицированная процедура, ‘ выполняемая по щелчку на кнопке Стоп Private Sub StopSec_Click() Flag = 1 StopSec.Enabled = False Start.Enabled = True End Sub

Читать еще:  Как сделать титульный лист в excel?

Также требуются небольшие изменения в процедуре обработки щелчка на кнопке Старт. Ее текст представлен в листинге 1.22.

‘ Листинг 1.22. Измененная процедура, ‘ выполняемая по щелчку на кнопке Старт Private Sub Start_Click() Th.Text = «» Tm.Text = 0 Ts.Text = 0 Flag = 0 Sec = Format(Now(), «ss») Shet = 0 StopSec.Enabled = True Start.Enabled = False While Flag = 0 Sec2 = Format(Now(), «ss») If Sec <> Sec2 Then Shet = Shet + 1 Sec = Sec2 ChetMins = Shet 60 ChetSecs = Shet — ChetMins * 60 Tm.Text = ChetMins Ts.Text = ChetSecs End If DoEvents Wend End Sub

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

Функции ЧАС, МИНУТЫ и СЕКУНДЫ для работы с временем в Excel

В программе Excel по умолчанию предусмотрены функции для работы с датой и временем: ЧАС, МИНУТЫ и СЕКУНДЫ. Детально рассмотрим эти три функции в действии на конкретных примерах. Как, когда и где их можно эффективно применять, составляя различные формулы из этих функций для работы с временем.

Примеры использования функций ЧАС, МИНУТЫ и СЕКУНДЫ для расчетов в Excel

Функция ЧАС в Excel предназначена для определения значения часа из переданного времени в качестве параметра и возвращает данные из диапазона числовых значений от 0 до 23 в зависимости от формата временной записи.

Функция МИНУТЫ в Excel используется для получения минут из переданных данных, характеризующих время, и возвращает данные из диапазона числовых значений от 0 до 59.

Функция СЕКУНДЫ в Excel применяется для получения значения секунд из данных в формате времени и возвращает числовые значения из диапазона от 0 до 59.

Контроль по часам суточного времени в Excel используя функцию ЧАС

Пример 1. Получить текущее время, определить, сколько часов прошло с начала текущих суток, сколько часов осталось до начала новых суток.

Определим текущий момент в коде времени Excel:

Вычислим количество часов от начала суток:

  • B2 – текущие дата и время, выраженные в формате Дата.

Определим количество часов до окончания суток:

  • 24 – количество часов в сутках;
  • B3 – текущее время в часах, выраженное в виде числового значения.

Примечание: пример демонстрирует то, что результатом работы функции ЧАС является число, над которым можно выполнять любые арифметические действия.

Преобразование чисел в формат времени с помощью функций ЧАС и МИНУТЫ

Пример 2. Из приложения были подгружены моменты прохождения некоторых событий, которые были распознаны Excel в виде обычных чисел (например, 13:05 было распознано как число 1305). Необходимо преобразовать полученные значения в формат времени, выделить часы и минуты.

Исходная таблица данных:

Для преобразования данных используем функцию:

Читать еще:  Как сделать так чтобы текст в excel не съедался?

  • B3 – значение, распознанное Excel в качестве обычного числа;
  • «00:00» – формат времени.

В результате получим:

С помощью функций ЧАС и МИНУТЫ выделим искомые величины. Аналогично определим требуемые значения для остальных событий:

Пример использования функции СЕКУНДЫ в Excel

Пример 3. Рабочий день начинается в 8:00 утра. Один работник систематически опаздывал на протяжении предыдущих 10 рабочих дней на несколько секунд. Определить общее время опозданий работника.

Внесем данные в таблицу:

Определим опоздание в секундах. Где B3 – данные о времени прихода на работу в первый день. Аналогично определим секунды опозданий для последующих дней:

Определим общее количество секунд опозданий:

Где C3:C12 – массив ячеек, содержащих значения секунд опозданий. Определим целое значение минут опозданий, зная, что в 1 мин = 60 секунд. В результате получим:

То есть, общее опоздание сотрудника за 10 дней составило 263 секунды, что более 4-х минут.

Особенности синтаксиса функций ЧАС, МИНУТЫ и СЕКУНДЫ в Excel

Функция ЧАС имеет следующую синтаксическую запись:

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

  1. Если в качестве аргумента функции ЧАС передана строка с текстом, не содержащим данные о времени, будет возвращен код ошибки #ЗНАЧ!.
  2. Если в качестве аргумента функции ЧАС были переданы данные Логического типа (ИСТИНА, ЛОЖЬ) или ссылка на пустую ячейку, будет возвращено значение 0.
  3. Существует несколько разрешенных форматов данных, которые принимает функция ЧАС:
  • В коде времени Excel (диапазон значений от 0 до 2958465), при этом целые числа соответствуют дням, дробные – часам, минутам и секундам. Например, 43284,5 – количество дней, прошедших между текущим моментом и начальной точкой отсчета в Excel (принято 0.01.1900 – условная дата). Дробная часть 0,5 соответствует 12 часам (половине суток).
  • В виде текстовой строки, например =ЧАС(“11:57”). Результат выполнения функции – число 11.
  • В формате Даты и Времени Excel. Например, функция вернет значения часов, если в качестве аргумента получит ссылку на ячейку, содержащую значение «03.07.18 11:24» в формате даты.
  • В качестве результата работы функции, возвращающей данные в формате времени. Например, функция =ЧАС(ВРЕМЗНАЧ(“1:34”)) вернет значение 1.

Функция МИНУТЫ имеет следующий синтаксис:

время_в_числовом_формате — обязательный для заполнения аргумент, характеризующий значение, из которого будут вычислены минуты.

  1. Как и в случае с функцией ЧАС, функция МИНУТЫ принимает на вход текстовые и числовые данные в формате Даты и Времени.
  2. Если аргументом данной функции является пустая текстовая строка (“”) или строка, содержащая текст (“некоторый текст”), будет возвращена ошибка #ЗНАЧ!.
  3. Функция поддерживает формат даты в коде времени Excel (например, =МИНУТЫ(0,34) вернет значение 9).

Синтаксис функции СЕКУНДЫ в Excel:

время_в_числовом_формате – единственный аргумент, представленный в виде данных, из которых будут вычислены значения секунд (обязателен для заполнения).

  1. Функция СЕКУНДЫ работает с текстовыми и числовыми типами данных, представляющих Дату и Время в Excel.
  2. Ошибка #ЗНАЧ! возникнет в случаях, когда аргументом является текстовая строка, не содержащая данные, характеризующие время.
  3. Функция также вычисляет секунды из числа, представленного в коде времени Excel (например, =СЕКУНДЫ(9,567) вернет значение 29).
Ссылка на основную публикацию
Adblock
detector