2016-01-28 4 views
0

Я пытаюсь выполнить итерацию по массиву ссылок диапазона.Excel VBA Iterate Array объектов диапазона

Dim labels As Collection 
Set labels = New Collection 
Dim myLabel As Range 
Set myLabel = FindDataRow(mySearchterms, CurrentWorksheet) ' <- Returns a Range 
labels.Add (myLabel) 

Позже я пытаюсь перебирать эти ссылки Range и следующий код не работает: я получаю ошибку 424. выполнения Я понимаю, что требуется объект, но как метка стала строкой.

Dim label As Variant 
Set label = Nothing 
For Each label In labels 
    Debug.Print (label & " in: " & label.Row) 
Next label 

Я попытался следующие this other answer here, но так как я новичок в VBA в Excel Я не понимаю, как ссылка Range помещается в структуру данных, а затем извлекаться/ссылка для доступа к label.Row как я хочу выше (в том месте, где говорится: «~~> Делайте все, что вы хотите сделать с этим диапазоном здесь»)

До сих пор я понимаю, что labels является коллекцией и не заботится о типе элементов, которые у него есть. Поэтому я добавил Range ссылок. Но я не могу получить их позже. Где я иду не так?

ответ

1

Удалите скобки из метода добавления, как и заставляет значение диапазона, которые будут добавлены в коллекцию, а не объекта:

labels.Add myLabel 
+0

Спасибо! Это заняло у меня большую часть дня. – user1532326

Смежные вопросы