Discussion:
[VBA] jak uzyskać OnTime < 1 sek
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Darek D.
2005-12-08 15:25:50 UTC
Permalink
Standardowy przykład użycia zdarzenia OnTime:
Application.OnTime Now + TimeValue("00:00:01"), "my_Procedure"

"zadziała" po 1 sek.

W jaki sposób można uzyskać krótsze czasy, np. 0,5 sek.?

Z góry dziękuje za wszelkie sugestie, pozdrawiam - Darek! :)
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Tajan
2005-12-08 23:40:20 UTC
Permalink
Witam!
Post by Darek D.
Application.OnTime Now + TimeValue("00:00:01"), "my_Procedure"
"zadzia³a" po 1 sek.
W jaki sposób mo¿na uzyskaæ krótsze czasy, np. 0,5 sek.?
A jaki to ma sens? Skoro Excel i tak bêdzie bez przerwy zajêty wykonywaniem
Twojej procedury, to mo¿e wystarczy zwyk³a pêtla w procedurze (no, mo¿e z
ma³ym "opóŒniaczem", w zalezno¶ci od czasoch³onno¶ci instrukcji w pêtli)?

Tajan
Darek D.
2005-12-09 16:49:04 UTC
Permalink
Post by Tajan
A jaki to ma sens?
Jestem po prostu ciekawy, a że wiem jak na razie niewiele, to próbuję
stosować nie zawsze - zazwyczaj ;) - nie najlepsze rozwiązania :(
Post by Tajan
Skoro Excel i tak będzie bez przerwy zajęty wykonywaniem
Twojej procedury,
No nie bez przerwy, może przez jakiś czas w tle, jeżeli użyję
"DoEvents" - tak sobie myślę, nie wiem czy dobrze, to wtedy może zrobi coś
jeszcze?
Post by Tajan
to może wystarczy zwykła pętla w procedurze (no, może z
małym "opóźniaczem", w zalezności od czasochłonności instrukcji w pętli)?
A ten "opóźniacz", to pewnie będzie różnie opóźniał ;) na mniej lub bardziej
wydajnych kompach? Coś jak z b. starymi grami - teraz, to nawet przycisk
turbo na obudowie zaginął :(

To rozumiem, że w przedstawiony poniżej sposób, to raczej się nie da?!
Post by Tajan
Post by Darek D.
Application.OnTime Now + TimeValue("00:00:01"), "my_Procedure"
"zadziała" po 1 sek.
W jaki sposób można uzyskać krótsze czasy, np. 0,5 sek.?
A tak mi się spodobał :)
Będę musiał w takim razie liczyć sekundy od północy, za pomocą Timer'a ;)

Pozdrawiam - Darek! :)
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Tajan
2005-12-09 19:30:06 UTC
Permalink
Witam!
Post by Tajan
A jaki to ma sens?
Jestem po prostu ciekawy, a ¿e wiem jak na razie niewiele, to próbujê
stosowaæ nie zawsze - zazwyczaj ;) - nie najlepsze rozwi±zania :(
Post by Tajan
Skoro Excel i tak bêdzie bez przerwy zajêty wykonywaniem
Twojej procedury,
No nie bez przerwy, mo¿e przez jaki¶ czas w tle, je¿eli u¿yjê
"DoEvents" - tak sobie my¶lê, nie wiem czy dobrze, to wtedy mo¿e zrobi co¶
jeszcze?
W pêtli równie¿ mo¿esz u¿yæ DoEvents.
Post by Tajan
to mo¿e wystarczy zwyk³a pêtla w procedurze (no, mo¿e z
ma³ym "opóŒniaczem", w zalezno¶ci od czasoch³onno¶ci instrukcji w pêtli)?
A ten "opóŒniacz", to pewnie bêdzie ró¿nie opóŒnia³ ;) na mniej lub
bardziej
wydajnych kompach? Co¶ jak z b. starymi grami - teraz, to nawet przycisk
turbo na obudowie zagin±³ :(
Mo¿na do tego u¿yæ funkcji API GetTickCount. Wtedy opóŒnienie mo¿na sobie
"regulowaæ" w milisekundach, wiêc nie powimnno byæ problemu z ró¿nymi
szybko¶ciami komputerów. Czyli ma³a pêtla wewn±trz du¿ej, a w niej DoEvents.
To rozumiem, ¿e w przedstawiony poni¿ej sposób, to raczej siê nie da?!
Post by Tajan
Post by Darek D.
Application.OnTime Now + TimeValue("00:00:01"), "my_Procedure"
"zadzia³a" po 1 sek.
W jaki sposób mo¿na uzyskaæ krótsze czasy, np. 0,5 sek.?
A tak mi siê spodoba³ :)
Bêdê musia³ w takim razie liczyæ sekundy od pó³nocy, za pomoc± Timer'a ;)
A có¿ w tym z³ego ? :-)

Tajan
pxd74
2005-12-11 13:28:22 UTC
Permalink
Post by Darek D.
Application.OnTime Now + TimeValue("00:00:01"), "my_Procedure"
"zadziała" po 1 sek.
W jaki sposób można uzyskać krótsze czasy, np. 0,5 sek.?
Możesz spróbować w ten sposób:
Application.OnTime Now + TimeValue("00:00:01") - ((30 / 60) / 3600) / 24,
"my_Procedure"

Możesz też użyć Timera systemowego. Przykład masz tutaj:
http://groups.google.pl/group/pl.comp.lang.vbasic/msg/fb02b4e03a6488e1
--
Pozdrowienia
pxd74
Darek D.
2005-12-11 16:39:39 UTC
Permalink
Post by pxd74
Application.OnTime Now + TimeValue("00:00:01") - ((30 / 60) / 3600) / 24,
"my_Procedure"
http://groups.google.pl/group/pl.comp.lang.vbasic/msg/fb02b4e03a6488e1
Dzięki i pozdrawiam - Darek! :)
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Loading...