首页 > 解决方案 > 对于移动文件夹的每个循环遍历文件夹正在跳过一些文件夹

问题描述

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

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

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

调试窗口输出:

49
46

标签: vbaoutlook

解决方案


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

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


推荐阅读