2017-06-15 58 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

谢谢!它完美的工作! –