Макрос Outlook 2010 выдает ошибку VBA «Цикл не инициализирован»

Я получил этот фрагмент кода из чьего-то блога много лет назад. Он в основном перебирает все почтовые правила Outlook и выполняет их (удобно для организации вашего почтового ящика!). Я недавно обновился до Outlook 2010 с 2007 года. Теперь я получаю очень странную ошибку с сообщением

Run-time error '92':
For loop not initialized

Однако при отладке он всегда будет запускаться 8 раз (из 20-25), а затем выдает эту ошибку.

Вот код нарушения:

Sub RunAllInboxRules()

    Dim st As Outlook.Store
    Dim myRules As Outlook.Rules
    Dim rl As Outlook.Rule
    Dim count As Integer
    Dim ruleList As String

    'get default store (where rules live) & get rules
    Set st = Application.Session.DefaultStore
    Set myRules = st.GetRules

    'iterate all the rules
    For Each rl In myRules
        If rl.RuleType = olRuleReceive Then         'determine if it’s an Inbox rule, if so, run it
            rl.Execute ShowProgress:=True
            count = count + 1
            ruleList = ruleList & vbCrLf & rl.Name
        End If
    Next

    'tell the user what you did
    ruleList = "These rules were executed against the Inbox: " & vbCrLf & ruleList
    MsgBox ruleList, vbInformation, "Macro: RunAllInboxRules"

    Set rl = Nothing
    Set st = Nothing
    Set myRules = Nothing

End Sub

Изменить:

Согласно комментарию Джея Риггса, очистка всего блока for по-прежнему приводит к ошибке.


person chad    schedule 04.04.2011    source источник
comment
Поскольку оно всегда выполняется только 8 раз, есть ли что-то особенное в 9-м правиле?   -  person Justin    schedule 05.04.2011


Ответы (2)


Я бы заменил этот цикл чем-то вроде:

Dim k as Long
For k = 1 To myRules.Count ' might be 0-based, didnt check
    set rl = myRules(k)
    If rl.RuleType = olRuleReceive Then         'determine if it’s an Inbox rule, if so, run it
        rl.Execute ShowProgress:=True
        count = count + 1
        ruleList = ruleList & vbCrLf & rl.Name
    End If
Next

Бьюсь об заклад, есть какое-то правило в позиции 8 или 9, которое не вписывается в коллекцию myRules и выдает ошибку. Вы также можете проверить коллекцию myRules в проблемной точке. Возможно, Office 2007 был более снисходительным и пропустил эту запись.

person MicSim    schedule 05.04.2011

Таким образом, проблема заключалась в том, что некоторые правила относились к файлу PST, который я пропустил при переходе на новую машину. Спасибо Джастину за то, что заставил меня глубже изучить правила!

+1 к неясному сообщению об ошибке для этого.

person chad    schedule 05.04.2011