此代码中的DataFile是什么类型的VBA变量/对象?

时间:2015-11-06 15:24:54

标签: excel vba excel-vba types

此代码是宏的一部分,用户选择包含数据文件的文件夹。然后,此功能会在列表框中列出所选文件夹中的所有文件,用户可以从中选择要处理的特定文件。代码工作正常,我只是想知道什么' DataFile'正在/正在做。它不会在任何代码中的任何位置声明为变量。它是内置的预定义对象还是只是在For循环中声明/初始化的变体类型?

Sub ListMyFiles(SourcePath)

    Set MyObject = New Scripting.FileSystemObject
    Set MySource = MyObject.GetFolder(SourcePath)

    nfile = 0

    On Error Resume Next

    For Each DataFile In MySource.Files
        If ((InStr(DataFile.Name, ".xlsx")) Or (InStr(DataFile.Name, ".xls"))) Then
            nfile = nfile + 1
            ListFilesTxt.AddItem (DataFile.Name)
        End If
    Next

End Sub

1 个答案:

答案 0 :(得分:1)

如果它没有被声明,那么默认情况下它会以变体类型开始它的生命,所以它可以足够灵活地容纳任何放入它的东西。

一旦在for each循环中使用它,它就变成了一个文件对象类型,因为它用于引用mysource.files中的文件。

它类似于经常使用的for i = 1 to 10,其中我没有被明确声明为任何东西。变量i作为变量开始其生命,并且只要它给出1到10的值来迭代,它就变成一个整数变量来保持1到10之间的值。

或另一个经常使用的示例for each cell in range("A1:C20").cells cell变量如果没有显式声明,则作为变量启动,并成为大小为1的范围变量,以在循环中保存每个单元格的引用。