【问题标题】:If email subject line starts with certain values then do something如果电子邮件主题行以某些值开头,则执行某些操作
【发布时间】:2015-08-17 06:45:00
【问题描述】:

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

Dim mail As Outlook.MailItem

If mail.Subject Like "VEH" & "*" Or "MAT" & "*" Then

试着说出邮件的主题是“VEH”还是“MAT”开头,然后做点什么。

【问题讨论】:

    标签: excel outlook vba


    【解决方案1】:

    您可以在这里简单地使用 VBA LEFT 函数:

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

    【讨论】:

    • 我更喜欢这种方法。只要稍作修改:)
    • 是的,你是对的,悉达多!需要修剪主题并添加Ucase以避免数据不一致。答案已更新。
    • ++ 现在说得通了 :)
    【解决方案2】:

    如果电子邮件来自不同的用户,那么我不建议在这种情况下使用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,请修改 @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 将字符串转换为大写。

    编辑

    如果你仍然想使用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 也会影响代码中的任何其他比较。

    【讨论】:

    • @Downvoter:需要评论吗?也许我会向你学习一些东西?如果是你只是不喜欢我的脸,那没关系......别打扰......我帮不了你太多:P
    【解决方案3】:

    If 语句的正确语法是:

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

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

    【讨论】:

    • 完美运行。谢谢!
    猜你喜欢
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 2013-02-12
    • 2023-04-06
    • 2013-01-20
    • 2023-01-25
    • 2018-06-01
    相关资源
    最近更新 更多