我曾经使用FSO循环文件夹中的文件夹和文件。它运行良好且直观,但比使用Dir()
慢得多。我可以成功使用Dir()
来遍历文件夹和文件。这里有很多很好的例子和其他论坛向我展示了如何。
我想知道的是为什么用mydir = Dir()
之类的东西完成循环,返回目录中的下一个文件/文件夹?虽然我知道如何使用代码,但是当我无法解释为什么它们有效时,我不喜欢使用技巧。
我感谢您提供的任何解释!
答案 0 :(得分:2)
我不知道dir
的内部结构,但一般原则很简单。
当您使用字符串调用dir(path)
时,dir将返回该目录中的第一个(如果有)文件(与筛选器匹配)。它还会记住目录,过滤器和位置。对没有参数的dir
的任何调用都会返回下一个元素或空字符串。
重现此类行为的简单示例
函数可以有Static
个变量,即。持续多次调用的变量。
Public Function TestFunc(Optional par As Integer = -1) As Variant
Static x As Integer
If par <> -1 Then
x = par
Else
x = x - 1
End If
If x > 0 Then
TestFunc = x
Else
TestFunc = False
End If
End Function
此测试将输出从5到1的数字。
Sub testing()
Dim v
v = TestFunc(5)
While v
Debug.Print v
v = TestFunc
Wend
Debug.Print "-end-"
End Sub
您可以逐行浏览此子行(F8),以确切了解正在发生的事情。