Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
此代码中的数据文件是什么类型的VBA变量/对象?_Vba_Excel_Types - Fatal编程技术网

此代码中的数据文件是什么类型的VBA变量/对象?

此代码中的数据文件是什么类型的VBA变量/对象?,vba,excel,types,Vba,Excel,Types,此代码是宏的一部分,用户在宏中选择包含数据文件的文件夹。然后,此函数在列表框中列出所选文件夹中的所有文件,用户可以从中选择要处理的特定文件。代码运行良好,我只是想知道“数据文件”在做什么。在任何代码中,它都不会声明为变量。它是一个内置的预定义对象,还是一个在For循环中声明/初始化的变量类型 Sub ListMyFiles(SourcePath) Set MyObject = New Scripting.FileSystemObject Set MySource = MyObj

此代码是宏的一部分,用户在宏中选择包含数据文件的文件夹。然后,此函数在列表框中列出所选文件夹中的所有文件,用户可以从中选择要处理的特定文件。代码运行良好,我只是想知道“数据文件”在做什么。在任何代码中,它都不会声明为变量。它是一个内置的预定义对象,还是一个在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

如果它没有被声明,那么默认情况下它将作为一个变体类型开始它的生命,这样它就可以足够灵活地容纳放入它的任何内容

一旦在
for each
循环中使用它,它就变成了文件对象类型,因为它的使用方式与mysource.files中的文件类似

这就像经常使用的i=1到10的
,其中i没有明确声明为任何东西。变量
i
以变量的形式开始其生命周期,一旦给它1到10的值进行迭代,它就会变成一个整数变量,以保持1到10之间的值


或者另一个经常使用的例子是范围(“A1:C20”)中的每个单元格的
。单元格
如果未明确声明,则该
单元格
变量将作为变量启动,并成为大小为1的范围变量,以根据循环中的需要保存每个单元格的引用。

如果默认情况下未声明为变量,但一旦在for-each循环中使用,它就会被定义为文件类型对象。值得注意的是,未声明的变量永远是变量,它的行为可能类似于您的
for
示例中的int类型,但在内部它是一个包含int的变体。它还可以根据需要自由地从say int变为long。感谢您的解释,非常有用。这就是我所想的。谢谢@AlexK,非常真实,值得一提!