
ヘルプには次のように記述がありますが、指定時刻に
実行させるプロシージャーの取り消しはサンプルの手順
で動作しますが、何秒後・・・を指定した場合のサンプル
はうまく取り消せません。"実行時エラー '1004'"と
なります。
この場合、どのように記述すればいいのでしょうか?
使用例
次の使用例は、現在から 15 秒後に my_Procedure を実行します。
Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"
次の使用例は、午後 5 時に my_Procedure を実行します。
Application.OnTime TimeValue("17:00:00"), "my_Procedure"
次の使用例は、前の使用例で設定した OnTime メソッドの設定を取り消します。
Application.OnTime EarliestTime:=TimeValue("17:00:00"), _
Procedure:="my_Procedure", Schedule:=False
No.1ベストアンサー
- 回答日時:
こんばんは。
サンプルを作ってみました。
このように、共通の時刻を、モジュール・スコープの変数を置けばよいかと思います。
これは、サンプルですから、MsgBox を使用していますが、ふつうは必要ありませんね。複数ある場合は、モジュール・スコープの変数を配列にすればよいのではないかと思います。
Dim m_Now As Variant
Sub OnTimeRoutine()
m_Now = Now()
Application.OnTime m_Now + TimeValue("00:00:15"), _
Procedure:="my_Procedure"
End Sub
Sub my_Procedure()
MsgBox Format$(Now, "hh:nn:ss")
End Sub
Sub OnTimeSettingOff()
If Not IsEmpty(m_Now) Then
On Error Resume Next
Application.OnTime m_Now + TimeValue("00:00:15"), _
Procedure:="my_Procedure", _
Schedule:=False
If Err.Number = 0 Then
MsgBox "取り消しました。", vbInformation
Else
MsgBox "取り消しできませんでした。", vbExclamation
End If
On Error GoTo 0
m_Now = Empty
Else
MsgBox "設定されていないか、設定が残っていません。", vbInformation
End If
End Sub
なお、m_Now 変数の型は、なぜ、Variant か意味が分りますか?Date型を使いませんでした。
ありがとうございました。助かりました。
>なお、m_Now 変数の型は、なぜ、Variant か意味が分りますか?Date型を使いませんでした。
うーん、よくわかりませんが・・・
If Not IsEmpty(m_Now) Then
の評価と関係しているような気がします。
No.2
- 回答日時:
こんにちは。
Wendy02です。
>うーん、よくわかりませんが・・・
>If Not IsEmpty(m_Now) Then
>の評価と関係しているような気がします。
そうです。私は、Date型で0では、設定されたか分らないからだと考えたからです。設定されていないのに、OnTimeメソッドをクリアしてもしょうがないですからね。正しいかはどうかは別として、私の工夫は、Variant 型は、0 と Emptyの区別がありますので、それに着目しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセル マクロ 指定日の指定時刻にプロシージャを実行 4 2022/04/17 16:44
- 英語 関係形容詞"which"の感覚について 4 2022/12/05 11:46
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- 英語 "beside"と比較級の共起の可否について 5 2022/11/15 09:51
- 英語 「名詞 of 名詞」において、どちらも同一人物が主体となったり所有する名詞の適切な各限定詞について 2 2022/08/18 11:32
- docomo(ドコモ) SIMロック、またはSIMロック解除の仕組みをおしえてください。 5 2022/04/25 10:57
- 英語 「子供の頃の大好物」等の『「~の頃の」+名詞』の表現について 8 2022/04/28 11:36
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- 英語 Conclusion: Antibacterial effects against P. gingi 2 2022/07/12 01:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Thunderbird 振り分けされなく...
-
bashで15分前と現在のエポック...
-
VBAのタイマー
-
SSDのTrimって毎日実行していい...
-
MODE関数を文字でできる関数は...
-
タスクススケジューラを停止さ...
-
ADのDC移行の手順を教えてください
-
FLEXlm Log fileを集計するソフト
-
エクセルで定期的(30分おき)...
-
PhotoStageスライドショーソフ...
-
スクリプトエラー表示
-
2010でShiftキーを使っても自動...
-
NetBTエラーとbrowserエラーが多発
-
Tera Termでのコマンド流し込み...
-
フォルダのサムネイル画像
-
ブラウザにIPアドレスを直打ち...
-
C:\\Documents and Settingsが...
-
フォルダのアイコン
-
フォルダについて。
-
pscp.exeでkeyのStoreを確認し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Thunderbird 振り分けされなく...
-
xcopyバッチを管理者として実行...
-
JP1で月末以外で毎週月曜日のジ...
-
エクセルで定期的(30分おき)...
-
VBAのタイマー
-
MODE関数を文字でできる関数は...
-
2010でShiftキーを使っても自動...
-
ADのDC移行の手順を教えてください
-
batファイルの実行が1行目のみ...
-
bat 処理の中止
-
vbsファイルによるネットワーク...
-
x64とIA64の違い
-
WindowsServer2003の、SMB1.0を...
-
Teratermで、条件分岐させたい
-
SSDのTrimって毎日実行していい...
-
Excel VBA のマルチページ
-
タスクススケジューラを停止さ...
-
CHKDSKの実行を解除したい
-
ログオン・ログオフスクリプト...
-
ログオンユーザーがいない場合...
おすすめ情報