2015-07-17 3 views
0

Я пытаюсь получить данные, хранящиеся в коллекции в VBA. Я не очень уверен, как получить данные. Это дает мне ошибку несоответствия типа.Извлечение данных из коллекции в VBA

Мой код выглядит следующим образом:

Set col = New Collection 
col.Add BGN_arr, "BGN" 
col.Add CBBT_arr, "CBBT" 

Dim curr_arr() As Variant 
Set curr_arr = col("BGN") 

Пробовал это так:

Set curr_arr = col.Item ("BGN") 

нужны некоторые рекомендации по этому вопросу.

+2

'curr_arr' в настоящее время массив Variant. Попробуйте сделать его вариантом (т. Е. 'Dim curr_arr As Variant' без круглых скобок). Если это сработает, я объясню, почему. – Heinzi

+0

Предполагая, что BGN_arr - это еще один массив, просто удалите 'set' - вы не имеете дело с ссылками на объекты –

+0

Коллекции VBA - это, по сути, словарные словарные слова. Хотя для них могут быть некоторые допустимые варианты использования, способ, которым вы, похоже, хотите их использовать, довольно похож на словарь. Если у вас нет веских причин, чтобы избежать их, я предлагаю добавить ссылку на Microsoft Scripting Runtime в ваш проект и вместо этого использовать словари. Объекты словаря имеют полезные методы, которые не имеют аналогов в объектах Collection (например, что-то простое, как проверка наличия ключа). –

ответ

1

У вас есть 2 проблемы, которые я вижу:

  1. Вы установили curr_arr() As Variant - Это не должно быть массивом.
  2. Вы используете метод Set, который может вызвать проблему.

Этот код должен работать:

Set col = New Collection 
col.Add BGN_arr, "BGN" 
col.Add CBBT_arr, "CBBT" 

Dim curr_arr As Variant 
curr_arr = col.Item ("BGN") 
Смежные вопросы