Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Отключение таймера (Application.OnTime) - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отключение таймера (Application.OnTime) (Макросы/Sub)
Отключение таймера (Application.OnTime)
A_3485 Дата: Пятница, 30.09.2016, 10:35 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 130
Репутация: 0 ±
Замечаний: 40% ±

Уважаемые форумчане, добры день!
У меня в Excel макросом запускается таймер на просмотр содержимого папки и если информация там есть, то происходит выполнение другой подпрограммы. Я не могу сообразить, как мне можно в случае необходимости выключить таймер (остановить выполнение программы) либо через кнопку или в самой программе через Exit Sub:
[vba]
Код
Private Sub Просмотр ()

x = "C:\User1\User2\*.*"
file = Dir(x)

    If file <> "" Then
        Программа_1
    Else:
        If Time >= #2:00:00 PM# Then Exit Sub       
        
        Application.OnTime DateAdd("s", 60, Now), "Просмотр"   
            
    End If
End Sub
[/vba]
 
Ответить
СообщениеУважаемые форумчане, добры день!
У меня в Excel макросом запускается таймер на просмотр содержимого папки и если информация там есть, то происходит выполнение другой подпрограммы. Я не могу сообразить, как мне можно в случае необходимости выключить таймер (остановить выполнение программы) либо через кнопку или в самой программе через Exit Sub:
[vba]
Код
Private Sub Просмотр ()

x = "C:\User1\User2\*.*"
file = Dir(x)

    If file <> "" Then
        Программа_1
    Else:
        If Time >= #2:00:00 PM# Then Exit Sub       
        
        Application.OnTime DateAdd("s", 60, Now), "Просмотр"   
            
    End If
End Sub
[/vba]

Автор - A_3485
Дата добавления - 30.09.2016 в 10:35
buchlotnik Дата: Пятница, 30.09.2016, 10:40 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 613 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
[vba]
Код
Public stop_ as Boolean
Private Sub Просмотр ()

x = "C:\User1\User2\*.*"
file = Dir(x)

    If file <> "" Then
        Программа_1
    Else:
        If Time >= #2:00:00 PM# or stop_ Then Exit Sub       
        
        Application.OnTime DateAdd("s", 60, Now), "Просмотр"   
            
    End If
End Sub

Sub StopUpdate()
    stop_ = False
End Sub
[/vba]


платная помощь:
ЯД: 410012595572239; WM: 311017577133
buchlotnik@mail.ru


Сообщение отредактировал buchlotnik - Пятница, 30.09.2016, 10:40
 
Ответить
Сообщение[vba]
Код
Public stop_ as Boolean
Private Sub Просмотр ()

x = "C:\User1\User2\*.*"
file = Dir(x)

    If file <> "" Then
        Программа_1
    Else:
        If Time >= #2:00:00 PM# or stop_ Then Exit Sub       
        
        Application.OnTime DateAdd("s", 60, Now), "Просмотр"   
            
    End If
End Sub

Sub StopUpdate()
    stop_ = False
End Sub
[/vba]

Автор - buchlotnik
Дата добавления - 30.09.2016 в 10:40
RAN Дата: Пятница, 30.09.2016, 11:40 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
OnTime(EarliestTime, Procedure, LatestTime, Schedule)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеOnTime(EarliestTime, Procedure, LatestTime, Schedule)

Автор - RAN
Дата добавления - 30.09.2016 в 11:40
A_3485 Дата: Пятница, 30.09.2016, 13:15 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 130
Репутация: 0 ±
Замечаний: 40% ±

что-то не очень понял, как это работает. Если например из кода убрать:
[vba]
Код
If Time >= #2:00:00 PM# or stop_ Then Exit Sub  
[/vba]

и оставить просто :
[vba]
Код
If stop_ Then Exit Sub  
[/vba]
тогда программа работает если переменная stop_ = TRUE.
 
Ответить
Сообщениечто-то не очень понял, как это работает. Если например из кода убрать:
[vba]
Код
If Time >= #2:00:00 PM# or stop_ Then Exit Sub  
[/vba]

и оставить просто :
[vba]
Код
If stop_ Then Exit Sub  
[/vba]
тогда программа работает если переменная stop_ = TRUE.

Автор - A_3485
Дата добавления - 30.09.2016 в 13:15
A_3485 Дата: Пятница, 30.09.2016, 14:03 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 130
Репутация: 0 ±
Замечаний: 40% ±

RAN, Если я запускаю код как отельную процедуру или в основном коде ничего не выходит, выдает ошибку:
[vba]
Код
Application.OnTime Time, "Просмотр", , False  
[/vba]
Так, тоже выдает ошибку:
[vba]
Код
Private Sub Стоп ()
Application.OnTime EarliestTime:=Time, Procedure:="Просмотр", Schedule:=False
End Sub
[/vba]


Сообщение отредактировал A_3485 - Пятница, 30.09.2016, 14:12
 
Ответить
СообщениеRAN, Если я запускаю код как отельную процедуру или в основном коде ничего не выходит, выдает ошибку:
[vba]
Код
Application.OnTime Time, "Просмотр", , False  
[/vba]
Так, тоже выдает ошибку:
[vba]
Код
Private Sub Стоп ()
Application.OnTime EarliestTime:=Time, Procedure:="Просмотр", Schedule:=False
End Sub
[/vba]

Автор - A_3485
Дата добавления - 30.09.2016 в 14:03
Manyasha Дата: Пятница, 30.09.2016, 14:59 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
A_3485, попробуйте так:
[vba]
Код
Public t As Date
Private Sub Просмотр()
    If t < Now Then Exit Sub
    'x = "C:\User1\User2\*.*"
    x = ThisWorkbook.Path & "\"
    file = Dir(x)
    If file <> "" Then
        Программа_1
    End If
    Application.OnTime DateAdd("s", 2, Now), "Просмотр"
    t = Now + 2 / 24
End Sub
Sub StopUpdate()
    t = Now
    Debug.Print "stop ", Time
End Sub
Sub StartUpdate()
    t = Now + 2 / 24
    Просмотр
End Sub
[/vba]
К сообщению приложен файл: timer.xlsm(18Kb)


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеA_3485, попробуйте так:
[vba]
Код
Public t As Date
Private Sub Просмотр()
    If t < Now Then Exit Sub
    'x = "C:\User1\User2\*.*"
    x = ThisWorkbook.Path & "\"
    file = Dir(x)
    If file <> "" Then
        Программа_1
    End If
    Application.OnTime DateAdd("s", 2, Now), "Просмотр"
    t = Now + 2 / 24
End Sub
Sub StopUpdate()
    t = Now
    Debug.Print "stop ", Time
End Sub
Sub StartUpdate()
    t = Now + 2 / 24
    Просмотр
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 30.09.2016 в 14:59
A_3485 Дата: Пятница, 30.09.2016, 15:17 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 130
Репутация: 0 ±
Замечаний: 40% ±

Manyasha, спасибо
 
Ответить
СообщениеManyasha, спасибо

Автор - A_3485
Дата добавления - 30.09.2016 в 15:17
RAN Дата: Пятница, 30.09.2016, 16:34 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub qq()
    Static t As Date
    If Dir(ThisWorkbook.Path & "\Книга11.xlsx") <> "" Then
        Application.OnTime t, "qq", , True
        MsgBox "QQ"
    Else
        MsgBox "WW"
        t = Now + TimeValue("00:00:10")
        Application.OnTime t, "qq"
    End If
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Sub qq()
    Static t As Date
    If Dir(ThisWorkbook.Path & "\Книга11.xlsx") <> "" Then
        Application.OnTime t, "qq", , True
        MsgBox "QQ"
    Else
        MsgBox "WW"
        t = Now + TimeValue("00:00:10")
        Application.OnTime t, "qq"
    End If
End Sub
[/vba]

Автор - RAN
Дата добавления - 30.09.2016 в 16:34
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отключение таймера (Application.OnTime) (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!