如何在Excel VBA中创建一个字符串变量以根据变量名称循环?

时间:2019-05-24 17:47:42

标签: excel vba

尝试以一种允许循环代码的方式设置变量名,而不必键入每个“目录”的实例。

此代码的目的是计算每个目录中有多少个文件。

我到目前为止拥有的代码(无效):

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

如果我不使用循环方法,则可以将变量设置为xFolder1xFolder2xFolder3等,但随后必须运行遍历目录进行每次迭代计数的代码实例。

有没有办法做到这一点?谢谢。

2 个答案:

答案 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