Коллекции Excel VBA / coll.Count - динамический - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть запрос на коллекции.Я пытаюсь создать код, который будет динамически обращаться к моим коллекциям.Но я сталкиваюсь со следующими проблемами:

Пример

Я создал коллекцию и выполнил следующее Debug.Print Backpack_O.Count.Результат был 3 - это ожидалось.

Однако, когда я пытаюсь сделать это динамически Debug.Print wks_GM2.Range("A" & b) & "_" & wks_GM2.Range("D" & b) & ".Count", мой результат Backpack_O.Count - не нужный результат.

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

For i = 1 To wks_GM2.Range("A" & b) & "_" & wks_GM2.Range("D" & b) & ".Count"

Я пытался обернуть это в CLng CStr и т. Д., Но я выхожу пустым.Может кто-нибудь помочь мне решить эту проблему ...

Ура !!!

1 Ответ

1 голос
/ 10 апреля 2019

Один из вариантов - создать коллекцию коллекций с именами коллекций в качестве ключей. Например:

Dim Backpack_0 As New Collection
Dim Backpack_1 As New Collection
...

Dim masterCollection As New Collection
masterCollection.Add Item:=Backpack_0, Key:="Backpack_0"
masterCollection.Add Item:=Backpack_1, Key:="Backpack_1"
...

Теперь вы можете динамически ссылаться на отдельные коллекции, создав ключ из вашего рабочего листа:

Dim collectionName as String
collectionName = wks_GM2.Range("A" & b).Value & "_" & wks_GM2.Range("D" & b).Value

For i = 1 to masterCollection(collectionName).Count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...