vba - 对于移动文件夹的每个循环遍历文件夹正在跳过一些文件夹
问题描述
我正在尝试遍历 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
解决方案
您不应使用for 更改您正在迭代for each
的集合(通过调用)的循环。outlookFolder.Move
使用向下for
循环(从倒数到 1)。
推荐阅读
- android - 如何设置android camera2参数以获得最佳文本识别效果
- python - 计算嵌套列表中相等子列表出现次数的更快方法是什么?
- arduino - 如何将延迟转换为毫秒
- sql - 使用 mysql 正则表达式验证我的 google bigquery 数据库中的电子邮件地址
- css - 在 Bootstrap 4 input-group-prepend 中对齐中心
- dart - 如果 TabBarView 有一个子 StreamBuilder ,其状态在侦听流时发生变化,是否有办法更新 TabBarView 的状态?
- powershell - 在 PowerShell 中格式化表格以导出为 CSV
- php - 如何将小数分隔符从 (.) 更改为 (,)
- reactjs - 反应 Laravel 部署
- angular - http、httpClient、httpModule 和 httpClientModule 有何不同?