[[20200706164111]] 『時刻指定でセルの値を自動クリアするマクロ』(ポポン) ページの最後に飛ぶ

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

 

『時刻指定でセルの値を自動クリアするマクロ』(ポポン)

指定した時刻にセルの値を自動でクリアするマクロを以下の様に組みました。

    Sub Auto_Open()

    macro1

    End Sub

    Sub macro1()

    Range("A1:A2").ClearContents
    Application.OnTime Now + TimeValue("15:00:00"), "macro1"

    End Sub

指定時刻(15:00:00)になるとA1~A2のセルに入力されている値が自動的にクリアされるようなマクロを目指してみたのですが、このままでは時刻になっても自動クリア出来ませんでした。ブックを閉じて再度Excelを立ち上げると時刻に関わらずセルがクリアさえてしまいます。

どのような修正を加えるとよいでしょうか?
宜しくお願い致します。

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


15時に実行したいのですか? でも「Now + TimeValue("15:00:00")」だと、現在時刻の15時間後、という意味ですよ?

Nowを足さないか(日を省略すると当日になる)、Int(Now)に15時間足すか(日付型を整数化すると時刻情報が消える)、ですね。
(???) 2020/07/06(月) 16:56


あと、クリアするのは15時に1回だけですか? それとも、Excelは動かしっ放しであり、毎日15時ですか?

1回だけで良いなら、OnTimeを書くのはAuto_Open時になります。 現状だと、正しく15時に動くように直した場合、15時になると自分を再登録し、無限ループしそうに見えます。
(???) 2020/07/06(月) 16:59


 >ブックを閉じて再度Excelを立ち上げると時刻に関わらずセルがクリアさえてしまいます。 
 >Range("A1:A2").ClearContents
 >Application.OnTime Now + TimeValue("15:00:00"), "macro1"
 順番を入れ替えてください。
(POPO) 2020/07/06(月) 17:03

>???さま

返信ありがとうございます。

Application.OnTime TimeValue("15:00:00"), "macro1" に修正し15:00:00にデータクリアされるのを確認しました。ありがとうございます。

Excelは常に動かしっぱなしになりますので、毎日15:00にクリアしてくれるのであれば、この修正で大丈夫です。
(ポポン) 2020/07/06(月) 17:16


>POPOさま
返信ありがとうございます。

    Sub Auto_Open()
    macro1
    End Sub

    Sub macro1()
    Application.OnTime TimeValue("15:00:00"), "macro1"
    Range("A1:A2").ClearContents
    End Sub

上記の様な修正でよろしかったでしょうか?
テストしてみましたが、セルに値が入力されている状態で上書き保存した後Excelを閉じて再度開くとやはりセルの値がクリアされた状態で立ち上げってしまいました。
(ポポン) 2020/07/06(月) 17:19


今のままでは、毎日クリアはしてくれませんよ? 当日の15時をセットし続けるでしょう。

動かし続けるなら、Auto_Open時は当日の15時でOnTimeして、Macro1では翌日の15時でOnTimeしましょう。
こうすれば、起動時に消去してしまう問題も解決するでしょう。
(???) 2020/07/06(月) 17:39


 >順番を入れ替えてください。
理解されたのでしょうか。
 >やはりセルの値がクリアされた状態
これについては分かりません。他の回答を期待してください。
(POPO) 2020/07/06(月) 19:18

コメント返信:

[ 一覧(最新更新順) ]


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