如果电子邮件主题行以某些值开始,则请执行某些操作

这行代码有什么问题? 抛出运行时错误“13”,types不匹配。

Dim mail As Outlook.MailItem If mail.Subject Like "VEH" & "*" Or "MAT" & "*" Then 

试着说电子邮件的主题是以“VEH”还是“MAT”开头,然后做一些事情。

If语句的正确语法是:

 If (mail.Subject Like "VEH*") Or (mail.Subject Like "MAT*") Then 

括号是可选的( Like运算符比Or有更高的优先级),但是它更易于阅读。

你可以在这里简单的使用VBA LEFT函数:

 If UCASE(LEFT(TRIM(mail.Subject), 3)) = "VEH" OR UCASE(LEFT(TRIM(mail.Subject), 3)) = "MAT" Then '' DO something here End If 

如果电子邮件来自不同的用户,那么我不会推荐在这种情况下使用Like 。 如果它是用固定主题生成的机器,那么它是有道理的。

原因Like/Left区分大小写

例如

 Sub Sample() Dim s As String s = "vehicle" If s Like "VEH*" Then MsgBox "Found a match" Else MsgBox "didn't find a match" End If End Sub 

要么

 Sub Sample() Dim s As String s = "vehicle" If Left(s, 3) = "VEH" Then MsgBox "Found a match" Else MsgBox "didn't find a match" End If End Sub 

替代

对于例如VehiclevehicleVeHiCle不区分大小写的search,请修改@PareshJ发布的内容。

 Sub Sample() Dim subj As String subj = " Vehicle Number XYZ" If UCase(Left(Trim(subj), 3)) = "VEH" Then MsgBox "Found a match" Else MsgBox "didn't find a match" End If End Sub 

Trim修剪前导和尾随空格, Ucase将string转换为大写。

编辑

如果你还想用Like那么你可能想用这个

 Option Compare Text '<~~ For case insensitive Sub Sample() Dim subj As String subj = " Vehicle Number XYZ" If Trim(subj) Like "VEH*" Then MsgBox "Found a match" Else MsgBox "didn't find a match" End If End Sub 

警告: Option Compare Text也会影响代码中的其他比较。