Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2010, 09:05   #1
vik85
Пользователь
 
Регистрация: 19.12.2009
Сообщений: 15
По умолчанию Таймер

Добрый день. Помогите плз. разобраться стаймером.
У меня есть два листа на одном находится макрос с таймером. на другом происходят вычисления по неким формулам. на лист с вычислениями я сделал ссылку на минуты с листа "таймер". текущее значение ячейки с минутой является аргументом к некоторым формулам, и пересчет формул на это листе происходит по событию Worksheet_Calculate(), т.к. в ряду некоторых обстоятельств по другому нельзя. Вот мой код макроса:
Sub Ввод_времени()
'Обновляет содержимое ячейки A1 текущим временем
Cells(1, 1) = Time
Minuty = Sheets("Таймер").Cells(2, 3).Value
Hasy = Sheets("Таймер").Cells(1, 3).Value
'Запускает следующее событие через секунду после настоящего
NextTick = Now + TimeValue("00:01:00")
Application.OnTime NextTick, "Лист2.Ввод_времени"
End Sub

Sub Остановка_времени()
On Error Resume Next
Application.OnTime NextTick, "Лист2.Ввод_времени", , False
End Sub

По сути мой вариант работает, но если запущю макрос к примеру в 12 мин 25 сек, то следущее обновление пройдет ровно через минуту т.е 13 мин 25 сек.
Мне нужно сделать так, чтоб в этом макросе не было секунд, и с системными часами синхронизировались только час и минута.

Короче мне нужно чтоб событие Worksheet_Calculate() срабатывало только тогда когда изменится значение минуты.
Если кто знает как перебороть секунды в макросе плз. помогите.
за ранее благодарен

Последний раз редактировалось vik85; 16.06.2010 в 09:50.
vik85 вне форума Ответить с цитированием
Старый 16.06.2010, 09:45   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Если вам секунды не нужны,то сделайте обновление таймера через минуту

Код:
NextTick = Now + TimeValue("00:01:00")
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 16.06.2010, 18:01   #3
vik85
Пользователь
 
Регистрация: 19.12.2009
Сообщений: 15
По умолчанию

Я так и сделал, посмотрите код, который написал я. Просто получается что таймер обновится через минуту после того времени когда я его запустил, а не тогда, когда реально кончится минута. Т.е, к примеру, если таймер запущен в 13:15:23 по системным часам, то я увижу обновление ровно через минуту - 13:16:23. Что само собой мне и не нравится, и как этого избежать (за исключением ка ловить 00 секунд для запуска) я не знаю. Может это и не возможно?
vik85 вне форума Ответить с цитированием
Старый 16.06.2010, 19:19   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Таймер с синхронизацией
Код:
Sub Ввод_времени()
'Обновляет содержимое ячейки A1 текущим временем
Dim d As Integer
Cells(1, 1) = Time
Minuty = Sheets("Таймер").Cells(2, 3).Value
Hasy = Sheets("Таймер").Cells(1, 3).Value
'Запускает следующее событие через секунду после настоящего
d = Second(Now)
NextTick = Now + TimeValue("00:01:00")
If Second(Now) = 0 Then

Else
NextTick = NextTick + TimeValue("00:0:" & 60 - d)
End If
Application.OnTime NextTick, "Лист2.Ввод_времени"

End Sub
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 16.06.2010 в 19:22.
doober вне форума Ответить с цитированием
Старый 16.06.2010, 19:58   #5
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

А может так? Отнимаем от текущего времени кол-во текущих секунд и + 1 мин.
NextTick = Now + TimeValue("00:01:00") - TimeSerial(0, 0, Second(Time))
nilem вне форума Ответить с цитированием
Старый 17.06.2010, 07:10   #6
vik85
Пользователь
 
Регистрация: 19.12.2009
Сообщений: 15
По умолчанию

спасибо, помогло. Очень признателен за помощь
vik85 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер dnskts Помощь студентам 5 11.06.2010 13:38
таймер в C# Munky Помощь студентам 2 15.04.2010 20:30
Таймер(C#) Bella Помощь студентам 0 23.03.2010 19:17
Таймер на С++ Александр Елис Помощь студентам 3 26.01.2010 16:30
Таймер в С# kommunist Общие вопросы .NET 3 02.06.2008 12:11