プロが教えるわが家の防犯対策術!

こんにちは、Excel Home&Buisiness 2019を使っています。

現在以下のようなマクロで一定時刻でマクロを実行させています。

' 開始
Application.OnTime EarliestTime:=TimeValue("03:59:40"), Procedure:="自動計算開始"
これは時刻のみ指定ですが、

やりたいのは
毎月初めの朝6時
毎週初めの朝6時 にもプロシージャを指定して実行させたいですがどうしたら良いでしょうか?

出来ればマクロだけでやりたいです。
詳しい方、よろしくお願い致します。

質問者からの補足コメント

  • HAPPY

    ありがとうございます。
    二つまとめて実行して良いんですね、助かりました!

      補足日時:2022/04/17 23:05

A 回答 (4件)

・・・うんん


こんな感じ
Sub 毎日実行()
Application.OnTime EarliestTime:=TimeValue("6:00:00"), Procedure:="自動計算開始"

Sub 自動計算開始()
If Day(Date) = 1 Or Weekday(Date) = 2 Then ’毎月1日と月曜日に実行
'メイン処理
    • good
    • 1
この回答へのお礼

どう思う?

ありがとうございます。

毎日実行は出来てるとして、毎月実行するものと、毎週実行するものが違うのでこんな感じで大丈夫でしょうか?

Sub 月初めに実行()
If Day(Date) = 1 Then Application.OnTime EarliestTime:=TimeValue("6:00:00"), Procedure:="月初めに実行"
Else
End If
End Sub

Sub 週初めに実行()
Weekday(Date) = 2 Then Application.OnTime EarliestTime:=TimeValue("6:00:00"), Procedure:="週初めに実行"
Else
End If
End Sub

お礼日時:2022/04/17 19:14

こんばんは


Application.OnTime で6時に毎日実行して
実行先プロシージャで条件分岐すれば、出来るのでは・・

月の初めと週の初めを取得する方法はご存知ですか
今月の1日を取得
Debug.Print DateSerial(Year(Date), Month(Date), 1)
週の基準値を取得
Debug.Print Weekday(Date) '1は日曜日
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

ちょっとよく解らないのですが、
Debug.Print DateSerial(Year(Date), Month(Date), 1) と書いておいて、もしDateSerial = 1なら Application.OnTime を実行しなさい、みたいな感じでしょうか?

Sub 毎月1日に実行()
If DateSerial = 1 , then
Application.OnTime EarliestTime:=TimeValue("6:00:00"), Procedure:="自動計算開始"

Else
End If
End Sub

お礼日時:2022/04/17 18:00

Excelを毎日指定した時間に起動させマクロを実行させる方法 タスクスケジューラ×VBA編 Excel VBAマクロ講座 - YouTube


    • good
    • 0
この回答へのお礼

出来ればマクロだけでやりたいです。

お礼日時:2022/04/17 23:06

"自動計算開始"の冒頭に条件分岐を入れれば良いのでは?



Dateから日付を取得して
1日なら"自動計算開始"の本体実行
違うなら終了

Weeldayから曜日を取得して
月曜(かな?)なら"自動計算開始"の本体実行
違うなら終了

みたいな。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A