vba - 对于每个反向使用 FileSystemObject
问题描述
我需要反转这个循环:
我试过使用“Step -1”,但没有奏效。我想这是因为这是一种 FSO 循环方法。
Set d = fso.GetFolder("address")
For Each File In d.files
If (Int(Mid(File.Name, 30, 5)) = Int(nfprocurada)) Then
ActiveWorkbook.FollowHyperlink Address:=File.Path, ExtraInfo:=False
Exit Sub
End If
Next
解决方案
For Each循环不接受步长或符号的任何更改。因此,如果要反转方向,则需要将循环类型更改为基于索引的循环,例如For counter = start to end
. 由于Files 集合不接受索引作为参数,因此您需要先将每个文件复制到数组中,然后才能使用索引遍历文件。
尝试这个:
Set d = FSO.getfolder("address")
Dim AllFiles() As Object, FileCount As Integer
For Each File In d.Files
ReDim Preserve AllFiles(FileCount)
Set AllFiles(UBound(AllFiles)) = File
FileCount = FileCount + 1
Next File
Dim i as Long
For i = UBound(AllFiles) To LBound(AllFiles) Step -1
If (Int(Mid(File.Name, 30, 5)) = Int(nfprocurada)) Then
ActiveWorkbook.FollowHyperlink Address:=AllFiles(i).Path, ExtraInfo:=False
Exit Sub
End If
Next i
推荐阅读
- reactjs - React - 在输入更改时维护表单包装器状态
- android - 阿德莫布。禁用特定的广告网络
- versions-maven-plugin - mvn versions:update-properties -DallowSnapshots=false - 不更新子模块
- python - 不重复字符的最长子串的长度
- ios - 如何访问我在不同文件中定义的方法?
- grails - grails 4.0.3 集成测试:如果 setup() 调用另一种方法保存到数据库,则更改不会持久
- python - 如何在模拟器中从下载中选择图像?
- html - Flexbox 不包装内容
- command-prompt - 如何使用命令提示符将解析的数据组织到表中?
- docker - Traefik 与 nip.io