2017-06-15 61 views
0

我一直試圖通過Access來設置outlook任務項,並用自定義消息替換運行時錯誤440。 某個字段(me.dueBy)爲空時會彈出此錯誤。 目前我的代碼已經成功創建了具有dueBy數據記錄的任務,但是當我點擊沒有截止日期的記錄按鈕時,則沒有任何反應。沒有消息框,沒有錯誤,沒有。訪問vba用自定義消息替換運行時錯誤

我只需要一個消息框告訴我,當該字段爲空時,我需要一個到期日期來設置任務。

Private Sub Command15_Click() 
Dim db As DAO.Database 
Dim rs As DAO.Recordset 
Dim DataErr As Integer 
Dim Response As Integer 

On Error GoTo err_handler 

Set db = CurrentDb 
Set rs = db.OpenRecordset("tblActions") 

Set outLookApp = CreateObject("outlook.application") 
Set OutlookTask = outLookApp.CreateItem(olTaskItem) 


With OutlookTask 
.Subject = "Action Due Date: " & Me.dueBy & " for Contract ID " & Me.contractID 
.Body = "Due date for Action: < " & Me.actionNote & " > is " & Me.dueBy & "." 
.ReminderSet = True 
.ReminderTime = Me.dueBy + TimeValue("8:00:00 AM") 
.Save 
End With 
MsgBox "Action Task has been set in Outlook successfully." 


exit_err_handler: Exit Sub 
err_handler: 
If DataErr = 440 Then 
Response = acDataErrContinue 
MsgBox "Due date is required.", vbOKOnly, "Due date Error" 
End If 
Resume exit_err_handler 

Set rs = Nothing 
Set db = Nothing 

End Sub 
+0

我認爲你需要在Outlook任務中設置另一個錯誤處理程序,因爲從Outlook的錯誤不會傳回。 – Minty

回答

1

DataErrResponse有觀點的Form_Error的事件。一般來說,它們在錯誤處理中沒有任何影響。在你的程序中,DataErr只是一個整數變量,並且除非明確指定另一個值,否則將始終爲0。

您需要在錯誤處理程序中檢查Err.Number以確定特定的錯誤情況。

+0

謝謝!它完美的工作! –