【发布时间】:2020-09-04 09:24:22
【问题描述】:
我正在尝试编写一个将类别应用于所有传入邮件的规则。
最终我想用它来标记带有“编程 - C”和“编程 - C++”标签的 C 和 C++ 相关电子邮件,但我简化了示例。
我还想对已具有指定类别的邮件运行此规则,但我不希望它双重标记已标记的电子邮件。
这是添加类别而不创建副本的子例程:
' Add a category but don't create duplicates
Sub AddCategory(ByRef Item As MailItem, strCategory As String)
Dim exists As Boolean
Dim arrCategories As Variant
' Initialize variables
exists = False
arrCategories = Split(Item.categories, ",")
' Loop through all categories
For i = LBound(arrCategories) To UBound(arrCategories)
' Check if the specified category already exists
If StrComp(strCategory, arrCategories(i)) = 0 Then
exists = True
Exit For
End If
Next i
' If the category does not exist, add it
If Not exists Then
Item.categories = Item.categories & "," & strCategory
End If
End Sub
调用它的子程序:
Sub filter(Item As MailItem)
Call AddCategory(Item, "Programming - C")
Call AddCategory(Item, "Programming - C++")
Item.Save
End Sub
此过滤器子例程从规则中调用并适用于所有传入邮件。
如果我在“收件箱中的所有项目”上运行此规则,并且一封电子邮件已被标记为“编程 -C”和“编程 - C++”,它将复制第二个标签。
因此,如果“Programming - C”是第一个标签,它将重复“Programming - C++”,反之亦然。
如何检查现有标签以避免重复?
【问题讨论】:
标签: vba outlook categories