Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7748 / 13644 ツリー ←次へ | 前へ→

【37097】周期的処理について てろてろ 06/4/21(金) 12:22 質問[未読]
【37098】Re:周期的処理について やっちん 06/4/21(金) 12:42 発言[未読]
【37106】Re:周期的処理について Kein 06/4/21(金) 15:38 回答[未読]
【37117】Re:周期的処理について てろてろ 06/4/22(土) 8:40 お礼[未読]

【37097】周期的処理について
質問  てろてろ  - 06/4/21(金) 12:22 -

引用なし
パスワード
   とても困っております。

17時まで30秒ごとに周期処理マクロを実行させるプロシージャを作りたいのですが
下のプログラムでは画面がフリーズして、エスケープかけても抜けれません。
Sleep関数も考えたのですが、処理はされても画面が動かないため諦めました。
どのようにすれば解決できるでしょう?

よろしくお願いします。


Sub 実行()

  Dim h As Single
  Const s_interval = 30 '周期処理を設定する
  
  Do
  
  h = Hour(Time)
  
  Application.OnTime Now + TimeSerial(0, 0, s_interval), "周期処理"

  Loop Until h >= 17

End Sub

【37098】Re:周期的処理について
発言  やっちん  - 06/4/21(金) 12:42 -

引用なし
パスワード
   ▼てろてろ さん:
こんにちは。
今のコードは17時までループし続けて終わりませんよね?(^^;
すごい回数の予約がされます。どこまで耐えてくれるのかは知りませんが。

1回目は「実行」から予約をして
2回目以降は「周期処理」の中で次の予約をしてはどうでしょうか?

【37106】Re:周期的処理について
回答  Kein  - 06/4/21(金) 15:38 -

引用なし
パスワード
   テスト用として・・

Sub Time_SC()
  Application.OnTime Time + TimeValue("00:00:05"), "TestPrc"
End Sub

Sub TestPrc()
  Static i As Long
 
  i = i + 1
  Cells(i, 1).Value = i
  If Time < TimeSerial(15, 40, 0) Then
   Call Time_SC
  Else
   MsgBox "終了 !"
  End If
End Sub

>TimeSerial(15, 40, 0)
        ↑この引数を、マクロ開始時刻の2分ぐらい先に変更して
空白シートを開いて Time_SC を実行してみて下さい。
うまくいったら、あとはどう改造すれば良いか分かりますよね。

【37117】Re:周期的処理について
お礼  てろてろ  - 06/4/22(土) 8:40 -

引用なし
パスワード
   ▼Kein さん、やっちんさん:

返信が送れてすみません。

できました。ありがとうございました。
最初、やっちんさんの言葉の意味が良く分からず悪戦苦闘でしたが、
Keinさんが書いていただいたコードを見て意味を理解できました。
OnTimeメソッドの使い方を学べてよかったです。
あと、TimeValueとTimeSerialの違いも学べました。

ありがとうございました。
また何かありましたら、よろしくお願いいたします。

>テスト用として・・
>
>Sub Time_SC()
>  Application.OnTime Time + TimeValue("00:00:05"), "TestPrc"
>End Sub
>
>Sub TestPrc()
>  Static i As Long
> 
>  i = i + 1
>  Cells(i, 1).Value = i
>  If Time < TimeSerial(15, 40, 0) Then
>   Call Time_SC
>  Else
>   MsgBox "終了 !"
>  End If
>End Sub
>
>>TimeSerial(15, 40, 0)
>        ↑この引数を、マクロ開始時刻の2分ぐらい先に変更して
>空白シートを開いて Time_SC を実行してみて下さい。
>うまくいったら、あとはどう改造すれば良いか分かりますよね。

7748 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free