いつもお世話になっております。
Excel VBA 時刻でのDo~Loopの抜け方を教えてください。
下記のような記述で、時刻(時間)の条件を満たした時
ループを抜けるように設定したのですが、
時刻が「8時」とか「15時」というように
時間でしか対応しません。
「何時何分」という設定にも対応するためには
どのように記述すればよいか教えてください
-------の部分は何らかの記述が入っているものとしてください。
↓このように記述しました
Do Until MyHour > 15
MyHour = Hour(Now)
-------------------
--------------------
--------------------
Loop
どうぞ、よろしくお願いします。
No.4ベストアンサー
- 回答日時:
こんにちは。
Wendy02です。>Sheets("a").select
>for J=1 to 10000:next j
>Sheets("b").select
>for J=1 to 10000:next j
>のように、シートの表示を切り替え
>画面表示を変えるようにしています。
ということは、シートの全体の監視ですか?
コードは、VBのスタイルですね。
画面の切り替えをずっとしていくのですか?
for J=1 to 10000:next j
これですと、1秒以内のような気がします。
For Each sh In Worksheets は、全部のワークシートですので、もし、そうでない場合は、For Each sh in Worksheets(Array("a","b"))として、配列にしてあげます。
今は、ちょっと、思いつく方法を書いてみただけで、もう少し、違った方法があったような気がします。一応、以下のものは試験はしてあります。
Sleep は、Wait よりも負担が少ないので使いました。
'--------------------------------------------------
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)
Sub ShChange()
Dim sh As Worksheet
Dim SettingTime As Date
Dim AtNow As Date
SettingTime = TimeValue("16:15:00")
AtNow = Now() - Int(Now)
Do Until AtNow > SettingTime
AtNow = Now() - Int(Now)
For Each sh In Worksheets
DoEvents
sh.Select
Sleep 2000 '1000 =1秒
Next sh
Loop
End Sub
No.3
- 回答日時:
こんにちは。
まあ、それそのものは、以下のようにすればよいのですが……。
それから、"15:51" というような文字列比較は、うまくいきませんね。
文字列は、"2" > "12" が、True です。
Dim SettingTime As Double '設定時間
Dim AtNow As Double '時間
SettingTime = TimeValue("15:51")
AtNow = Now() - Int(Now())
Do Until AtNow > SettingTime
AtNow = Now() - Int(Now())
-------------------
--------------------
--------------------
Loop
しかし、全体的には、疑問の残る余地が大きいです。
OnTime メソッドを上手に使ったほうがよいのではないかと思いますし、Loop を繰り返せば、Excelはメモリ喰いなので、PC自体の負担が大きいのではないかと思います。
Do Until .....
>-------------------
>--------------------
>--------------------
>Loop
「線の中」で何をしているかが問題です。長い時間を使うというのは、全体的に、イベントの代わりじゃないかと思います。その場合は、Do ~ Loop じゃないのですね。部分的に質問を出されると、全体的には、間違った解答をしているのではないか、不安が残ります。
丁寧な回答ありがとうございました。
Do~Loop
の中では、
Sheets("a").select
for J=1 to 10000:next j
Sheets("b").select
for J=1 to 10000:next j
のように、シートの表示を切り替え
画面表示を変えるようにしています。
Do~Loop
このような場合の使い方は適切ではないのでしょうか?
ご教授お願いします
No.2
- 回答日時:
本題を間違えました。
Sub 時刻で処理()
MyHour = "15:51"
Do Until Hour(Now) & ":" & Minute(Now) > MyHour
MsgBox "節分"
Loop
End Sub
15:51を適当に変えてください。
PC自体の時計(日付と時刻のプロパティ)を操作すると確認し易いと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) Excel VBAについて、 フォルダ内のファイルを全て開きたい場合、 FSOを使えば、Dirは使わ 1 2023/01/27 13:18
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Excel(エクセル) Excel 2019で質問があります。 計測器のデータをExcelで記録したんですが、1秒刻みで記録 4 2022/09/07 22:46
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- エアコン・クーラー・冷暖房機 日立のエアコンのリモコン 5 2023/04/01 00:25
- その他(Microsoft Office) outlook vba 予定表 3 2022/11/20 14:51
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの差込印刷で可視セルだけ...
-
Excel VBA インデックスの境...
-
エクセルVBA 別シートの複数の...
-
シャープのアクオス sh-m25 を...
-
VBA:同じ文字列データの比...
-
Excel で行を指定回数だけコピ...
-
エクセル:VBAで月変わりで、自...
-
VBA 貼付先範囲(行)がいっぱ...
-
歯抜けの時間を埋めて行の挿入
-
Excel VBA 時刻でのD...
-
VBAで複数シート選択
-
excel:色付き文字の抽出と変換法
-
Excelマクロ データが上書きさ...
-
エクセルVBAで SendKeys "{TAB}"
-
Excel VBA :2回目以降実行で貼...
-
エクセルVBAで実行時エラー...
-
Excel VBA元データから別シー...
-
EXCELマクロで全シート対...
-
スマホ機種変更で旧機種のGoogl...
-
携帯修理出して戻ってきたら、L...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 別シートの複数の...
-
Excel で行を指定回数だけコピ...
-
Excel VBA インデックスの境...
-
excelの差込印刷で可視セルだけ...
-
VBA:同じ文字列データの比...
-
VBA別シートの最終行の下行へ貼...
-
エクセル:VBAで月変わりで、自...
-
エクセルVBAで 2種のリストを...
-
歯抜けの時間を埋めて行の挿入
-
エクセルVBAで SendKeys "{TAB}"
-
VBAで条件が一致する行のデータ...
-
EXCELマクロで全シート対...
-
VBAの指示の内容 昨日こちらで...
-
Excel VBAでシート内全体に非表...
-
VBAで複数シート選択
-
Excelマクロ データが上書きさ...
-
Excel VBA 時刻でのD...
-
VBA 貼付先範囲(行)がいっぱ...
-
エクセルVBAでの日付順のデ...
-
【WORD差し込み印刷】複数レコ...
おすすめ情報