スクリプトでエラーが発生するたびに、フォーカスはVBAコードと違反行に変わります。私はそれを修正し、保存を押す。それから私はそれが一時停止していないことを確認した後でも、スクリプトはもはや実行されていないことに気付きます。デバッグ後にVBAスクリプトが継続しないのはなぜですか?
たとえば、私はForm_Timer()
イベントを使用して、何らかのテストを行います(間隔は1000msに設定されています)。スクリプトをもう一度テストするために、私はちょうど1分後に設定します(たとえば、現在の時刻が午前8:54:00の場合、午前8時55分に起動するように設定します)。しかし、これはエラーの後で動作を停止します。誰がなぜこれが分かっていますか?スクリプトを再作成するために、Access DBのコピーを閉じて再度開くようにユーザーに指示する必要はありません。
コード:
Private Sub Form_Timer()
On Error GoTo ErrorHandler
current_date_time = Now
If current_date_time = #6/28/2016 8:52:00 AM# Then
MsgBox ("the current_date_time variable holds: " & current_date_time)
'Declare objects
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim oApp As Outlook.Application
Dim oMail As Outlook.MailItem
Dim mail_body As String
'Set objects
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("qry_BMBFLoc")
Set rst = qdf.OpenRecordset
Set oApp = New Outlook.Application
Set oMail = oApp.CreateItem(olMailItem)
mail_body = "The following jobs do not have the special BF location set in Job Orders: " & vbCrLf
If Not (rst.EOF And rst.BOF) Then
rst.MoveFirst
Do Until rst.EOF = True
mail_body = mail_body & rst!job & "-" & rst!suffix & vbCrLf
rst.MoveNext
Loop
'Email contents
oMail.Body = mail_body
oMail.Subject = "Blah"
oMail.To = "[email protected]"
oMail.Send
'Close stuff
rst.Close
dbs.Close
Set rst = Nothing
Set oMail = Nothing
Set oApp = Nothing
End If
End If
Exit Sub
ErrorHandler:
Dim msg As String
If Err.Number <> 0 Then
msg = "email Form Timer Error #" & Str(Err.Number) & " error Line: " & Erl & Chr(13) & Err.Description
MsgBox msg, , "Error", Err.HelpFile, Err.HelpContext
End If
Exit Sub
End Sub
これは愚かな質問かもしれませんが、マクロをデバッグした後、スクリプトを続行するにはf5を押しますか? – jellz77
@ jellz77いいえ、私はそうではありませんでした。私はF5キーを押すとマクロ名を尋ねるダイアログボックスが表示されますが、それを与えるマクロはわかりません。私はVBAスクリプトを実行していました... – whatwhatwhat
デバッグ後、Ctrl + S(保存)を押してスクリプトが一時停止していないことを確認します。それは上の '[break]'を削除するので、私はスクリプトが再開したと仮定します。しかしそれはもはや消えません。 – whatwhatwhat