На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS RSS
>  Форум на Исходниках.RU
       FAQ
         VBA FAQ
           Оптимизация VBA-кода
msm.ru
! `
Не забудьте заглянуть в VB6 FAQ, так как большая часть VB-примеров актуальна и для VBA-раздела ;)
Модераторы: Old Bat, MIF
  

> Работа с коллекцией объектов
Profi Old Bat
Сообщ. #1, 30.04.05, 16:42

Moderator
*****
Профиль · PM

Поощрения: 18 Dgm
Рейтинг (т): 123

Используйте цикл FOR EACH X in… NEXT для обработки коллекции

При каждой итерации Х будет содержать ссылку на следующий элемент коллекции, соответственно, работа с элементами коллекции значительно упрощается
Исключение: если Вам надо перебрать элементы в порядке, отличном от того, в котором они были добавлены в коллекцию – выбор у Вас отсутствует: только FOR … NEXT , т.к. у FOR EACH … нет параметров, управляющих порядком его выполнения (STEP)

см. также Работа с циклами

Удаляйте элементы из коллекции «Сверху-вниз»
ExpandedWrap disabled
    Dim col as New Collection
    For j=col.Count to 1 step -1
    '''''''''''''''''''''''''''
    Col.Remove j
    Next

При таком варианте кода удалять элементы проще, т.к. при этом индексы элементов коллекции не изменяются.

Не удаляйте элементы из коллекции для ее очистки

Для очистки коллекции можно сделать так:
ExpandedWrap disabled
    Dim col as New Collection
    For j=col.Count to 1 step -1
    Col.Remove j
    Next

Но гораздо быстрее будет так:
ExpandedWrap disabled
    Set col= New Collection

так как в данном случае Вы просто освобождаете ссылку на исходную коллекцию


Использованы материалы: "From Access 2002 Desktop Developer's Handbook"
Litwin, Getz, and Gunderloy. (Sybex, 2001)
___________
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:

> Форум на Исходниках.RU · VBA FAQ · Оптимизация VBA-кода



[ Script Execution time: 0,0639 ]   [ 16 queries used ]   [ Generated: 18.04.14, 13:08 GMT ]  

Rambler's Top100