【问题标题】:Type Mismatch in mailitem loopmailitem 循环中的类型不匹配
【发布时间】:2014-08-13 21:38:58
【问题描述】:

Outlook 2010 VBA。 尝试在我的所有文件夹中搜索标记的邮件。 创建了这个:

Private Sub flagrecurse(fold As Variant)

Dim olItem As MailItem
Dim nxtfold As Folder
Dim olFoldVar As Variant

'Test for which folder is being checked
MsgBox (fold.Name)

If fold.Folders.Count > 0 Then
    For Each nxtfold In fold.Folders
        Set olFoldVar = nxtfold
        flagrecurse olFoldVar
    Next nxtfold
Else
    For Each olItem In fold.Items
         'Test for which item is being checked
         If TypeName(olItem) = "MailItem" Then
            MsgBox (olItem.Subject)
            With olItem
                If .FlagRequest <> "" Or .IsMarkedAsTask Then
                    '.TaskDueDate = Now
                    'Sets a reminder today, in case one wasn't set
                    If Not (.ReminderSet) Then
                        .ReminderSet = True
                        .ReminderTime = Now + 2 / 24
                        .Save
                    End If
                End If
            End With
        End If
    Next olItem
End If

结束子

问题是我的收件箱中有 744 个项目,它通过 8 或 9 个,然后给我一个“类型不匹配”。当我调试时,它会标记“下一个 olItem”,当我检查“olItem”的值时,它会解析为“无”。

我做错了什么?

【问题讨论】:

    标签: vba outlook mailitem


    【解决方案1】:

    您假设文件夹中只能有 MailItem 对象。您还可以拥有 ReportItem、MettingRequestItem 等。将 olItem 声明为通用对象并检查 Class 属性为 43 (olMail)。

    【讨论】:

    • 我知道文件夹中还有其他对象。我的假设是 for each 只会查看与我正在使用的变量类型匹配的项目(而不是使变量为空)。不管怎样,你的建议奏效了。谢谢!
    • 血腥传奇。这让我很难过!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多