【问题标题】:VBA For each looping function with deleting itemVBA对于每个带有删除项目的循环函数
【发布时间】:2022-01-02 04:51:26
【问题描述】:

我有下面的代码来循环访问 Outlook 约会中的受邀参与者并删除所有参与者,但它没有按预期工作。删除一个与会者后,它将跳过下一个与会者并删除之后的与会者。例如。如果与会者一被删除,下面的代码将跳过与会者 2 并删除与会者 3,依此类推。我希望拥有它,因此它会删除所有与会者,而不仅仅是其他所有与会者。有什么建议吗?

For Each Item In RestrictedItems
    If Item.Class = olAppointment Then
        For Each Attendee In Item.Recipients
                Attendee.Delete
            End If
        Next Attendee

【问题讨论】:

  • 使用 for 循环并向后循环?
  • 您不能使用 for Each 循环来删除集合中的项目。这样做的原因是您正在更改您用作控制变量的集合,因此控制变量的内部计数器与集合的实际成员不同步,这意味着某些项目不会被删除,因为他们由于删除了其他项目,集合中的位置已更改。这就是为什么您必须使用 sight for 循环并向后计数的原因,以便已删除的项目不会影响仍待处理的项目的位置。
  • 抱歉,我该怎么做呢?如果有帮助,我可以发布我的完整代码吗?

标签: vba outlook


【解决方案1】:

在不了解您的代码的情况下,可能 -

cnt = Item.Recipients.Count
For i = cnt to 1 Step -1
    Item.Recipients(i).Delete
Next

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 2018-10-09
    • 2021-07-05
    • 1970-01-01
    相关资源
    最近更新 更多