|
▼勉強中 さん:
もう解決されているようですが、
老婆心から少し・・・
変数の扱いで困っているレベルで、とかく無限ループに陥りやすい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"), "計算"
|
|