Как в VBA использовать компонент Timer?

Программирование на Visual Basic for Applications
Milevskiy
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 05.11.2002 (Вт) 19:56
Откуда: Russia

Как в VBA использовать компонент Timer?

Сообщение Milevskiy » 24.01.2006 (Вт) 16:19

Всем привет!
Поскажите, можно ли в VBA использовать компонент Timer?
В списке стандартных элементов его почему-то нет :?
И подключить к проекту не удается. Но очень нужно.

H-E-L-P !!!

Заранее благодарен.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.01.2006 (Вт) 16:24

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

uzer_@
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 16.08.2005 (Вт) 16:44
Откуда: Санкт-Петербург

Сообщение uzer_@ » 24.01.2006 (Вт) 16:25

:oops:
Последний раз редактировалось uzer_@ 24.01.2006 (Вт) 16:44, всего редактировалось 1 раз.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.01.2006 (Вт) 16:36

uzer_@, ты вопрос вообще читал?

Milevskiy, если VBA6 (есть AddressOf), то можно через API.
В противном случае, можно использовать методы приложения, если такие методы есть (для Excel это Application.OnTime), либо хитрить.
Lasciate ogni speranza, voi ch'entrate.

Milevskiy
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 05.11.2002 (Вт) 19:56
Откуда: Russia

Сообщение Milevskiy » 25.01.2006 (Ср) 10:43

Мне нужно, чтобы через определенные интервалы времени запускалась функция (интервалы очень короткие - порядка 10-100 мс.) При этом предполагается выполнение действий за пределами этой функции.
Если бы я делал это в обычном VB6 то просто кинул бы на форму таймер, и все. А вот как тут быть? :?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.01.2006 (Ср) 10:44

В третий раз. Какое приложение?
Lasciate ogni speranza, voi ch'entrate.

Milevskiy
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 05.11.2002 (Вт) 19:56
Откуда: Russia

Сообщение Milevskiy » 25.01.2006 (Ср) 10:52

З.Ы. У меня VBA6 (Excel).
Как это под ним реализовать?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.01.2006 (Ср) 11:18

Application.OnTime
Lasciate ogni speranza, voi ch'entrate.

Milevskiy
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 05.11.2002 (Вт) 19:56
Откуда: Russia

Сообщение Milevskiy » 26.01.2006 (Чт) 15:41

А как юзать этот "Application.OnTime"?
Где его в коде разместить и как правильно прописать?

Заранее благодарен.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.01.2006 (Чт) 15:44

В F1 все есть. Даже примеры.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.01.2006 (Чт) 15:49

Не думаю, что ontime поможет на промежутках 10-100 мс.

Исходная задача в чём?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Milevskiy
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 05.11.2002 (Вт) 19:56
Откуда: Russia

Сообщение Milevskiy » 26.01.2006 (Чт) 16:06

Короче говоря, у меня в коде функция, подразделенная как бы на несколько частей. Для каждой из этих частей созданы публичные переменные типа "boolean".
В зависимости от состояния этих переменных срабатывают вот эти самые куски кода.
Значения переменных изменяются вне этой функции.
Вот мне и нужно, чобы эта самая функция через определенное время выполнялась и отслеживала состояние переменных.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.01.2006 (Чт) 16:09

Рухнет сразу.


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

Milevskiy
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 05.11.2002 (Вт) 19:56
Откуда: Russia

Сообщение Milevskiy » 26.01.2006 (Чт) 17:41

Вот пример моего кода:

Функция должна выполняться регулярно, через определенное время проверяя значения переменных.

Код: Выделить всё
Public SetLeft As Boolean
Public SelRight As Boolean
Public SetUp As Boolean
Public SelDown As Boolean

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

   If KeyCode = 37 Then SetLeft = True Else
   If KeyCode = 39 Then SelRight = True Else
   If KeyCode = 38 Then SetUp = True Elseы
   If KeyCode = 40 Then SelDown = True Else


  Call FFunction
End Sub

Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

   If KeyCode = 37 Then SetLeft = False Else
   If KeyCode = 39 Then SelRight = False Else
   If KeyCode = 38 Then SetUp = False Else
   If KeyCode = 40 Then SelDown = False Else

Call FFunction

End Sub


Public Function FFunction()

   If SetUp = True Then
     ...
   Else
     ...
   End If

   If SetLeft = True Then
     ...
   Else
     ...
   End If


   If SelRight = True Then
     ...
   Else
     ...
   End If


End Function


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 108

    TopList