Vba 发送前检查地址

Vba 发送前检查地址,vba,outlook,Vba,Outlook,我正在写一个宏,它会查看收件人的地址,如果是某个名称,则会显示一个vbYesNo msgbox。然而,当发送给我自己时,它显示了msgbox(亚伦·伊斯拉姆) 假设用于获取收件人名称的代码工作正常: 不确定为什么有两个if语句来检查内容 但是,在这两种情况下,您都需要这样使用或: If RecipientsName = "Sarah Bloggs" Or RecipientsName = "Sarah Smith" Then 您必须始终编写完整的条件,如: If value1 = value

我正在写一个宏,它会查看收件人的地址,如果是某个名称,则会显示一个vbYesNo msgbox。然而,当发送给我自己时,它显示了msgbox(亚伦·伊斯拉姆)


假设用于获取收件人名称的代码工作正常:

不确定为什么有两个if语句来检查内容

但是,在这两种情况下,您都需要这样使用

If RecipientsName = "Sarah Bloggs" Or RecipientsName =  "Sarah Smith" Then
您必须始终编写完整的条件,如:

If value1 = value2 [AND/OR value3=valu4] ...

阅读有关msdn上VBA If…Then…Else语句的更多信息:

在知道如何使用错误代码之前,请勿使用。错误是隐藏的,因此您无法修复它们

Option Explicit

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Dim Prompt As String

    ' LCase converts strings to lower case 
    If InStr(LCase(Item.To), LCase("Sarah")) Then
        Prompt = "You are sending this to " & Item.To & ". Is it the correct one?"
        If MsgBox(Prompt, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check Address") = vbNo Then
            Cancel = True
        End If
    End If

End Sub

删除错误,然后继续下一步。将生成错误,以便您可以修复它们。特别是在调试时,应该将其删除。
Option Explicit

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Dim Prompt As String

    ' LCase converts strings to lower case 
    If InStr(LCase(Item.To), LCase("Sarah")) Then
        Prompt = "You are sending this to " & Item.To & ". Is it the correct one?"
        If MsgBox(Prompt, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check Address") = vbNo Then
            Cancel = True
        End If
    End If

End Sub