此代码是宏的一部分,用户选择包含数据文件的文件夹。然后,此功能会在列表框中列出所选文件夹中的所有文件,用户可以从中选择要处理的特定文件。代码工作正常,我只是想知道什么' 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
答案 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的范围变量,以在循环中保存每个单元格的引用。