Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Excel, текущее время и сигнал


Автор: Trinitron 6.9.2006, 08:39
Подскажите, как на листе Excel в определенные моменты времени (например, 9:00, 9:05, 9:12 и т.д.) организовать вывод звукового сигнала? Буду очень признателен за помощь.

Автор: ~FoX~ 6.9.2006, 09:14
Кроме таймера ничего в голову не приходит....
Вешйешь таймер, скажем на сикунду, и по таймеру сравниваешь текущее время с тем которое тебе надо, и если оно совпадает или больше выдаешь beep....
Тока ИМХО овчинка выделки не стоит....

Автор: Romikgy 6.9.2006, 09:15
макрос напиши и будет те бикать 

Автор: ИгнатьевАлексей 6.9.2006, 09:22
Смотри функции
Time() - текущее время
Beep - звуковой сигнал

Автор: Trinitron 6.9.2006, 09:29
Спасибо откликнувшимся.
Только мне непонятно, как сделать, что бы эта проверка постоянно выполнялась? Ведь время-то движется. Макрос то можно сделать, а как сделать, что бы он постоянно работал и проверял условие по времени и выдавал сигнал?

Автор: mihanik 6.9.2006, 09:39
Ну-с, так вот что.
Таймер повесить...
На форме VB6 таймер повесить просто.
А вот в ехеле...

На ум пришло такое.

Создаём в книге модуль с макросом с именем auto_open.
И заставляем этот макрос работать до тех пор, пока 1 <> 2...  smile 

Код

' Эта переменная нам нужна для того, чтобы знать отсчитываем мы время, или нет...
Public blnTimerIsStarted As Boolean

Sub auto_open()

Dim lngTime As Long
Dim lngAlarmTime As Long
    
   lngAlarmTime =  <какое-то время, когда пикнуть надо.>

   Do  ' начинаем бесконечный цикл

    If blnTimerIsStarted Then ' проверяем, а стоит ли проверять время, т.е. "таймер" запущен или нет...

        lngTime = Time() ' Узнаём сколько сейчас времени
        
        If lngTime > lngAlarmTime Then ' Если подошло время пикать, то 
            Beep                                       ' Пикаем
            blnTimerIsStarted = False      ' Останавливаем таймер
        End If
  
    End If
  
   DoEvents ' В системе происходят и другие события, которые и обработаем...

   Loop Until 1 = 2

End Sub



Теперь на страничке вешаем две кнопочки.
Одна запускает наш импровизированный таймер, а другая его останавливает...

Код

Private Sub CommandButton1_Click()
    blnTimerIsStarted = True               ' Запустили "таймер"
End Sub

Private Sub CommandButton2_Click()
    blnTimerIsStarted = False               ' Остановили "таймер"
End Sub


Код не проверял.
Даю только идею...

Автор: Trinitron 6.9.2006, 09:49
Огромное спасибо, попробую

Автор: mihanik 6.9.2006, 10:01
Trinitron!

Надеюсь, ты понимаешь, что макрос auto_open начнёт работать сразу же, как только будет открыта книга ехеля?
(Это означает, что возможны некоторые тормоза...)
Кроме того т.к. этот макрос работает до тех пор, пока 1<>2, то он работает вечно!  smile
Т.е. до тех пор, пока книга не закроется, или пока ты не прервёшь его по какому-нибудь другому условию...

А теперь подумай: нужно ли тебе это?


Автор: Trinitron 6.9.2006, 10:47
Цитата(mihanik @  6.9.2006,  10:01 Найти цитируемый пост)
А теперь подумай: нужно ли тебе это?

Спасибо, это лично мне не нужно, попросили реализовать такое именно на листе Excel

Автор: mihanik 6.9.2006, 10:52
Цитата(Trinitron @  6.9.2006,  10:47 Найти цитируемый пост)
 попросили реализовать такое именно на листе Excel 


Извращенцы!!!  smile  smile  smile 

Автор: Trinitron 6.9.2006, 11:04
Точно

Автор: Akina 6.9.2006, 11:41
Можно сделать форму с hidden=true, а на нее таймер. 

Автор: mihanik 6.9.2006, 11:53
Akina, я сначала тоже так хотел, но покопался и не нашёл таймера в ехеле...
Мож плохо искал...
Если наёдёшь, подскажи! 

Автор: Trinitron 6.9.2006, 12:12
Там его я тоже не нашел.
Реализовал, как предложил mihanik, только сделал массив времени на листе, когда надо выводить сигнал, всё работает, спасибо огромное mihanik, выручил.

Автор: Дмит 7.9.2006, 00:02
Ну ребята вы и извращенцы.

При старте: Application.OnTime TimeValue("09:00:00"), "my_Procedure"

и в 9:00 выполнится процедура "my_Procedure", в которой конечно же Beep.

Автор: mihanik 7.9.2006, 06:38
Дмит!

Ты где раньше был? smile 
Классный способ!!! smile 

Надо будет запомнить!!!

Автор: Trinitron 8.9.2006, 13:29
Да уж, а если таких моментов несколько, т.е., например, надо подать сигнал в 9:00, потом в 9:13 и т.д.?

Автор: mihanik 10.9.2006, 08:37
Trinitron, а кто тебе мешает подать эту команду несколько раз?
Время прошло - переназначай время события...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)