首页 > 解决方案 > 如何在 If 语句中使用 AND 应用两个条件?

问题描述

我正在尝试根据回复时放置在邮件正文中的单词将电子邮件从Inprogress Folder移动到Completed Folder 。

  1. 如果回复邮件中包含Completed字样,则必须将回复邮件移至Completed Folder
  2. 如果回复邮件有Canceled字样,则必须将回复邮件移动到 Canceled Folder

我尝试了下面的代码,但它抛出

编译错误:异常表达式

错误是因为这两条线。

If InStr(1,olMail.Body, "Completed") And
If InStr(1, Item.Subject, olObj.Subject) > 0

完整代码:

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

    Dim olNameSpace As NameSpace
    Set olNameSpace = GetNamespace("MAPI")
    
    Dim olDestFolder As folder
    Set olDestFolder = olNameSpace.Folders("xxx@xxx.com").Folders("Completed")
    
    Dim olLookUpFolder As folder
    Set olLookUpFolder = olNameSpace.Folders("xxx@xxx.com").Folders("InProgress")

    ' olMail is a Class. Avoid as a variable name
    'Dim olMail As MailItem
    Dim olObj As Object ' Outlook items are not necessarily mailitems
    
    For Each olObj In olLookUpFolder.Items 'loop through Tickets folder to find original mail
    
        If olObj.Class = olMail Then

            If InStr(1,olMail.Body, "Completed") And
            If InStr(1, Item.Subject, olObj.Subject) > 0  Then 'look for olObj.Subject in Item.Subject

                olObj.Move olDestFolder ' move to InProgress folder
                Exit For
            End If
            
        End If
    
    Next

End Sub

标签: vbaoutlook

解决方案


你想写

If InStr(1,olMail.Body, "Completed") > 0 And InStr(1, Item.Subject, olObj.Subject) > 0 Then 'look for olObj.Subject in Item.Subject

       olObj.Move olDestFolder ' move to InProgress folder
       Exit For
End If

推荐阅读