Как создать строковую переменную в Excel VBA для цикла по имени переменной? - PullRequest
0 голосов
/ 24 мая 2019

Попытка установить имена переменных таким образом, чтобы зацикливать код без необходимости набирать экземпляр каждого «каталога».

Цель этого кода - подсчитать, сколько файлов в каждомdirectory.

Код, который у меня есть (не работает):

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 и т. Д., Но тогда я должен был бы запустить экземпляр кода, который циклически просматривает каталоги для подсчета для каждой итерации.

Есть ли способ сделать это?Спасибо.

Ответы [ 2 ]

3 голосов
/ 24 мая 2019

Определите все последующие как массив 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
0 голосов
/ 24 мая 2019

Спасибо за ответы и объяснения окружающих типов / массивов. Добавлена ​​переменная 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...