尝试以一种允许循环代码的方式设置变量名,而不必键入每个“目录”的实例。
此代码的目的是计算每个目录中有多少个文件。
我到目前为止拥有的代码(无效):
Sub CountFiles()
Dim xFolder() As Long
Dim xPath() As Long
Dim xCount() As Long
Dim xFile() As String
Dim z As Long
xFolder(1) = "\\generic path"
xFolder(2) = "\\generic path2"
For z = 1 To 2
xPath(z) = xFolder(z) & "\*.xlsx"
xFile(z) = Dir(xPath(z))
Do While xFile(z) <> ""
xCount(z) = xCount(z) + 1
xFile(z) = Dir()
Loop
With Worksheets("test")
.Cells(3, 2).value = xCount(z)
End With
Next z
End Sub
如果我不使用循环方法,则可以将变量设置为xFolder1
,xFolder2
,xFolder3
等,但随后必须运行遍历目录进行每次迭代计数的代码实例。
有没有办法做到这一点?谢谢。
答案 0 :(得分:3)
将以下所有内容定义为String
数组,在这种情况下,您希望每个数组都有2个元素。
Dim xFolder(1 To 2) As String
Dim xPath(1 To 2) As String
Dim xCount(1 To 2) As Long
Dim xFile(1 To 2) As String
答案 1 :(得分:0)
感谢围绕类型/数组的答案和解释。添加了y变量,以使输出列每次前移1。
最终工作代码:
Sub CountFiles()
Dim xFolder(1 To 2) As String
Dim xPath(1 To 2) As String
Dim xCount(1 To 2) As Long
Dim xFile(1 To 2) As String
Dim z As Long
Dim y As Long
xFolder(1) = "\\generic path"
xFolder(2) = "\\generic path2"
For z = 1 To 2
xPath(z) = xFolder(z) & "\*.xlsx"
xFile(z) = Dir(xPath(z))
Do While xFile(z) <> ""
xCount(z) = xCount(z) + 1
xFile(z) = Dir()
Loop
y = z + 1
With Worksheets("test")
.Cells(3, y).value = xCount(z)
End With
y = 0
Next z
End Sub