当我尝试将变量设置为特定规则时,我的VBA代码崩溃

时间:2015-06-23 13:19:33

标签: vba outlook outlook-2013

Sub RunRuleMyRule()
    Dim myRule As Outlook.Rules
    Dim theRule As Outlook.Rule
    Set myRule = Application.Session.DefaultStore.GetRules()
    Set theRule = myRules.Item("rule1") 'get error here
    If theRule.Enabled Then
        theRule.Execute
    Else
        theRule.Enabled = True
        theRule.Execute
    End If
End Sub

当我调试它时,theRule是“Nothing”而我的代码崩溃了。我不知道还能做些什么。我知道客户端上存在规则,我手动运行规则。

2 个答案:

答案 0 :(得分:0)

至少为了防止崩溃(我不知道为什么当你说它存在时找不到规则),试试:

Set theRule = myRules.Item("rule1") 
If (theRule Is Nothing) Then Exit Sub

答案 1 :(得分:0)

Rules类的Item方法获取Index指定的Rule对象,该对象是Rules集合或规则名称的数字索引。

很可能您将错误的值传递给方法。尝试迭代所有规则并检查其名称以确保存在此规则。

您可能会发现Getting Started with VBA in Outlook 2010文章有用。