[[20200716155852]] 『毎月月初の指定時間にマクロを実行させる方法』(ねこちぐら) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『毎月月初の指定時間にマクロを実行させる方法』(ねこちぐら)

先日 毎日同じ時間にマクロを実行する方法を質問させて頂いた者です。
[[20200714115052]]

その時は、毎日7:00にA1セルの値をクリアするマクロについて
質問させて頂き、以下のコードにて実行できました。

Sub macro1() '時間指定自動起動

Application.OnTime TimeValue("07:00:00"), "ALLRESET"

End Sub

Sub ALLRESET() '時間指定自動データクリア

Range("A1").ClearContents

Application.OnTime DateValue(Date + 1) + TimeValue("07:00:00"), "ALLRESET"
↑ 翌日のOnTimeをセット

End Sub

今回、毎月月初(1日)の7:00になるとA1セルをクリアする方法を
考えています。
前回をベースに、月初め(1日)の7:00にA1セルをクリアする
コードを↓の様に考えてみました。

Sub macro1() '時間指定自動起動

Application.OnTime TimeValue("07:00:00"), "ALLRESET"

End Sub

Sub ALLRESET() '時間指定自動データクリア

Range("A1").ClearContents

Application.OnTime DateSerial(Year(Date), Month(Date), 1) + TimeValue("07:00:00"), "ALLRESET"
↑ 翌日のOnTimeをセット

End Sub

(PCの時刻をいじって 8/1 7:00)試しに実行してみると、8/1の7:00になるとA1セルに入力された値はクリアされるのですが、その後すぐに待ち状態になってしまい、そのまま動かなくなってしまいました。

日付を指定したDateSerial関数の部分が悪さしていると思うのですが、
どの様な修正を加えるとよいのでしょうか?

因みに、Thisworkbookに以下のコードを書き込んであり、
Excelを開くことで指定した日付時刻にA1セルをクリアするマクロが
動くようにしてあります。

Private Sub Workbook_Open() 'Excel起動時に"時間指定自動起動"を実行

Call macro1

End Sub

以上、宜しくお願い致します。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


んー、日付型をごちゃごちゃするよりも、元のまま毎日実行しておいて、プロシジャが呼ばれたときに現在日を調べて、1日だったら処理するけど、他の日だったら何もせずに、再度翌日指定でOnTime…、というのを繰り返せば良くないですか?
(???) 2020/07/16(木) 16:24

あ、肝心の間違い箇所を書き忘れました。

当日を元に1日目を計算しているから、当月の1日になってますよ。
来月の1日にしたいなら、月に+1しましょう。
(???) 2020/07/16(木) 16:45


あ、なるほど。DateSerial(Year(Date), Month(Date) + 1, 1) てことですね。理解できました。
ありがとうございます。
(ねこちぐら) 2020/07/16(木) 17:06

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.