For Each Loop over folders that moves folders skipping some folders

For Each Loop over folders that moves folders is skipping some folders

我正在尝试遍历 Outlook 中子文件夹中的所有文件夹,以查看字符串是否在 Excel sheet.

循环跳过了一些文件夹,所以我必须重新运行宏。调试时循环跳过测试用例中的三个项目。

Dim outlookFolder As Variant
Dim numOutlookFolders As Integer: numOutlookFolders = 0
Debug.Print POFolder.Folders.Count
For Each outlookFolder In POFolder.Folders
    Found = False
    For Each PO In tbl.ListColumns(1).DataBodyRange.SpecialCells(xlCellTypeVisible)
        If InStr(outlookFolder.Name, PO) Then
            Found = True
            'Exit For
        End If
    Next PO
    
    If Found = False Then
        If InStr(outlookFolder.Name, "PO") Then
            outlookFolder.MoveTo CompletedFolder
            Dim folderName As String: folderName = outlookFolder.Name
            fileStream.WriteLine folderName
            Count = Count + 1
        End If
    End If
    numOutlookFolders = numOutlookFolders + 1
Next outlookFolder
Debug.Print numOutlookFolders

调试Window输出:

49
46

要确保循环是否正常工作,您需要删除其中的所有代码:

Dim outlookFolder As Variant
Dim numOutlookFolders As Integer: numOutlookFolders = 0

Debug.Print POFolder.Folders.Count

For Each outlookFolder In POFolder.Folders
    numOutlookFolders = numOutlookFolders + 1
Next outlookFolder

Debug.Print numOutlookFolders

如果您在输出中得到相同的数字,您可以开始逐行添加代码,这样您将能够了解是哪一行代码导致了问题。

如果您在输出中没有得到相同的数字,您可以尝试找出导致问题的确切文件夹。

您不应将 for each 用于更改正在迭代的集合(通过调用 outlookFolder.Move)的循环。

使用向下 for 循环(从倒数到 1)。