[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラーが出てしまい、困っています。どなたか教えてください。』(タジタジ)
ブックを開いて15秒後に、指定のマクロを走らせます。
その後、10分おきに最初に指定したマクロを10回走らせるということがしたくて。
ただ、途中でブックを閉じる時があるので、その際は、指定マクロが開かないようにし、ブックを閉じたいです。しかし、閉じようとすると、エラーが出てしまいます。
(下記のようなエラーメッセージ)
’On Time'メソッドは失敗しました Application オブジェクト
どこが間違っているのか教えてください。お願いします。
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Sheet("計画").Select
Sheet("計画").Activate
Sheet("計画").Range("A1") = 0
mytime = now + TimeValue("00::00:15")
Application.OnTime mytime, "動作"
Application.ScreenUpdating = True
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime mytime, "動作", , False
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−
Public mytime As Date
Sub 動作()
Sheets("計画").Range("A1").Value = Sheets("計画").Range("A1").Value + 1
動作内容がある
If Sheets(計画").Range("A1") < 10 Then
mytime = Now + TimeValue(00:10:00)
Application.OnTime mytime, "動作"
End if
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−
< 使用 Excel:Excel2007、使用 OS:Windows7 >
(γ) 2016/11/23(水) 21:35
γさんの指摘の通りです。
そもそも、手打ちするより、実際のコードをコピペして貼り付けるほうが簡単ではないですか?
ところで、ブックを閉じようとしてエラーになる、その時の 計画シートの A1 の値を確認すれば なにが問題か、自分で発見できるかもしれませんよ。
(β) 2016/11/23(水) 22:31
コード作成後に、いったん閉じようとしているとか(予約はされていない)。
所定回数に達したあとで、予約がない状態でとじようとした、とか。
(βさんすみません。)
Before_Closeのコードの中で、
On Error Resume Next を使うのでしょうかね。
(γ) 2016/11/23(水) 23:06
先ほど、見直してみたら動作できたのですが、なんか腑に落ちなくて。
どこがダメだと、’On Time'メソッドは失敗しました Application オブジェクト
エラーがでるのですか?
下記は、うまく動いたものです。
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Sheets("計画").Select
Sheets("計画").Activate
Sheets("計画").Range("A1") = 0
mytime = Now + TimeValue("00:00:15")
Application.OnTime mytime, "動作"
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime mytime, "動作", , False
ActiveWorkbook.Save
End Sub
Public mytime As Date
Sub 動作()
Sheets("計画").Range("A1").Value = Sheets("計画").Range("A1").Value + 1
Sheets("計画").Select
If Sheets("計画").Range("A1") < 10 Then
mytime = Now + TimeValue("00:00:15")
Application.OnTime mytime, "動作"
End If
End Sub
(タジタジ) 2016/11/23(水) 23:33
いやぁ・・・
ActiveWorkbook.Save これは、あまり意味がないというか、必要なら、それはそれでいいのですが OnTimeエラーには関係のないコードです。
そうではなく、私もコメントしたつもりですし、γさん指摘の
>>所定回数に達したあとで、予約がない状態でとじようとした、とか。
このあたりは確認しましたか?
(β) 2016/11/24(木) 00:43
今のロジックは、15秒毎に動作し、10回繰り返していますね。セルに10を入れた後は、もう繰り返しません。
closeの際、既に10回繰り返した後であれば、もう次のOnTimeは登録されていないので、停止しようとすると、そんな登録は無い、ということでエラーになる訳です。 10回繰り返す前にcloseした場合のみ、OnTimeの停止要求が受け付けられて、正常終了してますね。
修正方法1:停止前に、停止する対象が存在するのか確認する
修正方法2:常に停止して、もしエラーになっても無視する
(???) 2016/11/24(木) 12:00
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.