我不明白循环使用dir()是如何工作的

时间:2014-10-31 17:48:24

标签: vba filesystems

我曾经使用FSO循环文件夹中的文件夹和文件。它运行良好且直观,但比使用Dir()慢得多。我可以成功使用Dir()来遍历文件夹和文件。这里有很多很好的例子和其他论坛向我展示了如何。

我想知道的是为什么用mydir = Dir()之类的东西完成循环,返回目录中的下一个文件/文件夹?虽然我知道如何使用代码,但是当我无法解释为什么它们有效时,我不喜欢使用技巧。

我感谢您提供的任何解释!

1 个答案:

答案 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),以确切了解正在发生的事情。