Excel VBA質問箱 IV

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

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


42328 / 76735 ←次へ | 前へ→

【39478】Re:OnTme メソッドについて
発言  漂流民  - 06/6/24(土) 22:24 -

引用なし
パスワード
   ▼勉強中 さん:

もう解決されているようですが、
老婆心から少し・・・

変数の扱いで困っているレベルで、とかく無限ループに陥りやすいDo〜Loop文を
使用されるのはあまりお奨めできません。
基本的にFor〜Next文を使用し、Do〜Loop文は条件式でしか抜けれない場合に
使うようにした方が良いと思います。

 For n = 0 To 23
'5分ごとの計算
  For k = 0 To 10 Step 5   '15分も含めるなら k = 0 To 15
    Application.OnTime TimeValue(n & ":" & k & ":00"), "計算"

'(中略)

  Next k
 Next n


>OnTimeメソッドを使って、毎正時から15分まで5分ごとに、"sub 計算" の演算をしようと下記のようなマクロを作りましたが、型が一致しないとのメッセージが出ます。解決策をお願いします。
”15分”は含めるのですか?勉強中 さんのコードだと含まれませんが・・・

もし含めるのであれば
>  Do Until k = 15
  Do Until k = 20
または
  Do Until k > 15
となります。

ついでに、Do〜Loop文を使用するのであれば
例えば
>  k=k+5
を7分ごとに
  k = k + 7
と変更し、
>  Do Until k = 15
を変更し忘れた場合TimeValueでエラーになるまでループしてしまうので、Do〜Loop文では
  Do Until k >= 15
のように範囲で指定するようにしたほうが無限ループに陥りにくくなります。


<以下は頭の片隅にでも入れておいて下さい^^>
ちなみに、私もテストコードでは便利に使用している宣言の省略と自動型変換ですが、
実使用では、変数宣言・キャストは行うようにした方が良いです。
余計なトラブル、メモリの浪費を回避できます。
 Dim n As Integer
 Dim k As Integer
    Application.OnTime TimeValue(CStr(n) & ":" & CStr(k) & ":00"), "計算"
0 hits

【39449】OnTme メソッドについて 勉強中 06/6/24(土) 10:10 質問
【39451】Re:OnTme メソッドについて Blue 06/6/24(土) 12:51 発言
【39463】Re:OnTme メソッドについて 勉強中 06/6/24(土) 15:34 発言
【39465】Re:OnTme メソッドについて Blue 06/6/24(土) 15:37 発言
【39472】Re:OnTme メソッドについて 勉強中 06/6/24(土) 17:40 お礼
【39466】Re:OnTme メソッドについて Kein 06/6/24(土) 15:40 発言
【39471】Re:OnTme メソッドについて 勉強中 06/6/24(土) 17:37 お礼
【39478】Re:OnTme メソッドについて 漂流民 06/6/24(土) 22:24 発言

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