【发布时间】:2020-06-23 16:10:26
【问题描述】:
我在 tutorial on MSDN 工作,学习为 Outlook 制作一些宏。我有这个因Type mismatch 错误而挂起的子程序。在Stop 和Resume 之后单步执行错误处理时,它会返回到Next 并完成查询。
查看 Immediate 中的结果集,缺少一项实际上是分发邮件列表而不是普通联系人。我将邮件列表从我的联系人中移出进行测试,并且没有发生错误。
我也计划建立其他邮件列表,因为这是为了工作。除了将它们保存在其他地方之外,是否有某种解决方法来逃避它?
代码如下:
Sub ContactName()
On Error GoTo ErrHandler
Dim ContactsFolder As Folder
Set ContactsFolder = Session.GetDefaultFolder(olFolderContacts)
MsgBox ("Contacts found: " & ContactsFolder.Items.Count)
Dim Contact As ContactItem
For Each Contact In ContactsFolder.Items
Debug.Print Contact.CompanyName
Next
Exit Sub
ErrHandler:
Debug.Print Err.Description
Stop
Resume
End Sub
【问题讨论】:
-
我猜
Mailing List项目不是Contact,因此For Each Contact In ContactsFolder.Items将由于无法转换为Contact而失败。一种替代方法是使用FOR循环而不是FOR EACH。然后您应该能够遍历Items并测试您拥有的项目类型并在访问其属性之前进行相应的转换。 -
似乎不起作用,否则我不知道如何使用
FOR循环编写它(这里是新手),但如果你能够在你的机器上进行测试如果联系人中有邮件列表并发布工作代码,我很乐意接受您的回答。