Стив Каммингс - VBA для чайников
- Название:VBA для чайников
- Автор:
- Жанр:
- Издательство:Компьютерное издательство Диалектика
- Год:2002
- Город:Москва
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стив Каммингс - VBA для чайников краткое содержание
Эта книга поможет освоить интегрированную среду разработки VBA и научиться программировать в VBA с использование объектов, их свойств, методов и событий. Обсуждаемые приемы программирования иллюстрируются примерами, которые можно сразу же опробовать на практике. Полученные знания вы сможете применить как для настройки и усовершенствования популярный офисных приложений, включая приложения Office XP, так и для создания собственных приложений.
Книга рассчитана на тех, кто собирается быстро и без лишних усилий научиться программировать для Windows, используя VBA.
VBA для чайников - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Кроме того, элементам коллекции можно назначить имена, по которым позже получают доступ к элементам. При этом вы не только получите возможность выбрать описательные имена, которые легко запомнить, но ускорите доступ к данным, особенно при числе элементов, превышающем 100.
Одним из отрицательных побочных эффектов при использовании коллекций является увеличение расхода памяти- коллекции для хранения информации используют тип Variant, а данные типа Variant занимают больше памяти, чем данные других типов. В больших коллекциях такого рода перерасход памяти весьма значителен.
Но самое главное ограничение при использовании объектов Collection - запрет па хранение в них данных пользовательского типа, т.е. их нельзя непосредственно использовать с базами данных (см. ниже раздел "Определение своих собственных типов данных"). Правда, с помощью несложных приемов программирования это ограничение довольно просто обойти. И кроме того, серьезно работая с VBA с базами данных, вы все равно, скорее всего, будете использовать готовые объекты из ядра Microsoft Jet (DAO) и библиотек ODBC, а не объекты, созданные кустарным способом.
Создание объектов Collection
Объекты Соlection создаются в программе точно так же, как и любые другие объекты, с использованием ключевого слова As для определения типа. Как и с другими объектами, вас есть на выбор два варианта.
* Можно объявить имя переменной для объекта и затем использовать оператор Set, чтобы создать ее. При этом в операторе Set нужно использовать ключевое слово New, чтобы создать новую коллекцию. Например:
Dim colMixedBag As Collection
* * *
Set colMixedBag = New Collection
' создание коллекции
colMixedBag.Add "Howard, Ethel"
' добавление элемента
* Можно обязать VBA создать объект автоматически при первом использовании переменной в программном коде. Для этого нужно поместить ключевое слово New в объявление переменной;
Dim colSetOfStuff As New Collection
* * *
' следующий оператор создает коллекцию
' при добавлении в нее целого значения
colSetOfStuff.Add intStuffing
Для заполнения созданной коллекции данными используйте метод Add (Добавить) точно так же, как при добавлении объектов во встроенные коллекции VBA-приложения (см, главу 12). Примеры использования метода Add вы найдете и в предыдущем разделе.
Синтаксис метода Add выглядит так:
Add (элемент[, имя] [, before индекс] [, after индекс])
При этом выражение элемент обязательное, оно может быть буквальным значением, переменной, ссылкой на объект или более сложным выражением, составленным из этих компонентов, - в общем, всем, что возвращает значение, распознаваемое VBA. Остальные аргументы метода Add необязательны, они обсуждаются в следующих разделах.
В общем-то, всегда можно обратиться к элементу коллекции по его индексу в этой коллекции, ло зачастую удобнее назначить элементу информативное имя. Для этого нужно при добаюекии элемента R коллекцию указать его имя в виде строки:
colFinancials - Add 14 32 3 . 44, "Продажи за февраль"
В этом операторе в коллекции colFinancials добавляется значение 14323 .44. Одновременно для этого элемента создается имя. Вполне допустимо при задании имени использовать переменную типа String.
Имя не только легче запомнить, чем индекс, оно, к тому же, обеспечивает единственный надежный способ доступа к конкретному элементу коллекции. При использовании методов Add и Remove позиции элементов данных в коллекции могут меняться. Даже если элемент с №69 станет 29-м, вы все равно сможете воспользоваться значением этого элемента, если знаете его имя.
Имя элементу можно присвоить только с помощью метода Add. Чтобы присвоить имя элементу, уже существующему без имени, придется удалить имеющуюся копию с помощью Remove и использовать Add для добавления элемента снова.
Иногда удобно разместить элементы коллекции в определенном порядке. И даже если при этом нельзя добавлять элементы в нужном порядке последовательно, то все равно нет проблем - метод Add позволяет вставлять элементы туда, куда требуется, просто доя этого нужно использовать аргументы before (.перед) и after (после).
Предположим, что вам нужно вставить новый элемент перед 35-м элементом в коллекции.
Вы можете использовать для этого оператор следующего вида:
colAnimals. Add strSpecies, before 35
Добавленный элемент станет 35-м элементом коллекции, подвинув все последующие (В отличие от- массивов, элементы коллекций нумеруются с 1.) Чтобы сообщить VBA, где вставить новый элемент, можно использовать и имя существующего элемента, например:
colОвощи. Add = stiCopt, after "Помидор"
В данном случае VBA найдет в коллекции существующий элемент с именем Помидор и сразу после него вставит новый.
Ясно, что в оператор, использующий метод Add, можно включить либо before, либо after, но никак не оба этих аргумента.
Для добавления в коллекцию множества элементов можно использовать цикл For . . . Next, подобно тому, как это делалось с массивами. Например:
Dim X As Integer, Y As Integer
У = 12
For X = 1 To 30
colHouseOfValues.Add Y * X
Next X
Говоря очевидное, сообщаю вам, что метод Remove удаляет элемент из коллекции. Объект для удаления можно задать либо с помощью индекса, либо с помощью имени, например:
colМинералы.Remove 2123
colМинералы.Remove "Боксит"
Не забывайте, что при удалении элемента, VBA, так сказать, "заполняет дыры" - номера всех элементов, следующих за удаленным, уменьшатся на 1.
Запутаться в размерах коллекции несложно, особенно после многократного использования Add и Remove. Родовой объект Collection имеет только одно свойство – Count (подсчет), - но, в силу вышесказанного, это свойство оказывается жизненно важным. Значение этого свойства можно присвоить переменной, например, так:
intРазмерКоллекции = col20Вопросов.Count
Его можно также использовать в условном выражении, как здесь:
If colPrices.Count > 1000
MsgBox "Слишком много позиций!"
End If
Кроме того, значение свойства Count можно использовать в цикле For . . . Next, чтобы выполнить некоторые действия по отношению ко всем элементам коллекции, например:
Dim Z As Integer
For Z = 1 To col Prices.Count
MsgBox "Цена " & col Prices ( Z)
Next Z
Но лучше для этого использовать цикл For Each. . . Next (см. главу 8).
Чтобы идентифицировать конкретный элемент в коллекции, используется индекс элемента или его имя (если оно определено). Например, значение элемента коллекции можно присвоить переменной:
datДеньРождения = colДниРождения("Василий Али-Бабаевич")
К сожалению, вам придется отслеживать имена самим - VBA не предлагает возможности прочитать имена элементов коллекции. Кроме того, нельзя изменить имя элемента иначе, как удалив этот элемент из коллекции и затем добавив его вновь.
Точно так же нельзя в существующий элемент коллекции поместить новое значение. Следующий оператор присваивания работать не будет: colInventory(1465) = 119
Читать дальшеИнтервал:
Закладка: