Подробнее о том, что можно сделать в VBA

Выше, в разделе Зачем мучиться с VBA?, я уже упоминал о том, как с помощью VBA можно усовершенствовать имеющиеся приложения. Пришло время обсудить это подробнее, чтобы вам стало ясно, наконец, что же все-таки можно получить от VBA.

Прежде чем приступить к реализации наших совместных планов грандиозных усовершенствований, замечу следующее: то, что можно получить от VBA, зависит от приложения, с которым вы работаете. Некоторые программы позволяют переопределить практически каждый элемент пользовательского интерфейса и каждую встроенную команду, предоставляя тем самым в изобилии строительный материал, из которого вы можете конструировать новые возможности, В других приложениях выбор оказывается намного скуднее.

Настройка пользовательского интерфейса

Одна из наиболее очевидных ситуаций, где стоит использовать VBA, - это изменение пользовательского интерфейса приложения, чтобы он стал привычнее и удобнее для вас.

(На всякий случай замечу, что пользовательский интерфейс означает то, как программа выглядит на экране, как в ней работают мышь, клавиатура и другие всевозможные средства, предоставленные программой вам, пользователю, для взаимодействия с программным обеспечением.) Во многих приложениях VBA позволяет изменять элементы пользовательского интерфейса так, как это удобно. С помощью всего нескольких строчек программного кода вы можете добавлять, удалять или изменять взаимное расположение кнопок на панелях инструментов, создавать новые панели инструментов, переопределять раскладку клавиатуры или модифицировать структуру меню. На рис. 1.1 показано окно Microsoft Word с любезно измененным VBA пользовательским интерфейсом.

Вам потребуется VBA, если вы захотите работать с документами Word на чистом экране, совершенно свободном ото всех панелей инструментов

Конечно, не стоит использовать паяльную лампу там, где и спички подойдут, - для самых простых изменений пользовательского интерфейса VBA часто оказывается слишком мощным средством. Многие из современных приложений позволяют изменять интерфейс вообще безо всякого программирования - с помощью перетаскивания элементов или диалоговых окон.

Тем не менее VBA полезен и б таких приложениях. С одной стороны, даже исключительно дружественные в этом смысле приложения могут не изменять некоторые части своего интерфейса без помощи VBA. С другой стороны, что еще важнее, VBA позволяет организовать целые группы автоматических изменений пользовательского интерфейса прямо во время работы - в зависимости от того, что вы делаете с программой в данный момент.

Предположим, вы работаете с суммами, превышающим миллион долларов, постоянно используя при этом одни и те же три панели инструментов. С помощью VBA вы можете создать программу, которая станет открывать эти панели инструментов вместе, а затем одновременно прятать их, когда в них нет необходимости.

До сих пор я говорил об изменении пользовательского интерфейса VBA приложения, но не о создании пользовательского интерфейса самой VBA программы. Хотя многие VBA-программы и представляют собой автоматы, выполняющие работу безо всякого вмешательства с вашей стороны, неизбежно наступит момент, когда вам понадобится создавать свои диалоговые и другие окна (для них в VBA используется обобщающий термин формы).

Из книги Давайте создадим компилятор! автора Креншоу Джек

Из книги Разгони свой сайт автора Мациевский Николай

Рассматриваем подробнее Рис. 3.1. Диаграмма работы pre-check и post-checkКогда к браузеру поступает запрос на открытие ресурса, который находится в кэше, и при этом кэш содержит расширения Cache-Control (отправленные с сервера как часть заголовка HTTP-ответа), тогда IE использует эти

Из книги Win2K FAQ (v. 6.0) автора Шашков Алексей

(1.13) Можно ли из W2kPro сделать W2kServer, и зачем это надо? Можно. Хотя и нельзя:-) Для этого служит программка под названием NTSwitch. Всё что она делает, это сохраняет копию вашего реестра, редактирует его, и восстанавливает его обратно. Благодаря тому, что различные версии

Из книги AutoCAD 2009 для студента. Самоучитель автора Соколова Татьяна Юрьевна

(5.4) В 1С Бухгалтерия 6 вместо русских букв показываются закорючки, что можно с этим сделать? Это происходит потому, что Microsoft заменил название шрифта MS SANS SERIF на MICROSOFT SANS SERIF, в результате чего 1С Бухгалтерия не может его найти. Для решения проблемы достаточно поменять

Из книги Добавьте в корзину. Ключевые принципы повышения конверсии веб-сайтов автора Айзенберг Джеффри

Из книги AutoCAD 2009. Учебный курс автора Соколова Татьяна Юрьевна

Подробнее о психологических типах От типа темперамента покупателя зависит, на какие вопросы он ищет ответы, в каких сведениях нуждается и как использует свое время при принятии решений.Есть несколько общих закономерностей:– людей с методичным типом интересует ответ на

Из книги AutoCAD 2008 для студента: популярный самоучитель автора Соколова Татьяна Юрьевна

Подробнее о шаблоне Установленный набор параметров сеанса можно сделать доступным и для рисунков, создаваемых впоследствии. Для этого следует сохранить документ как шаблон. Шаблон обычно представляет собой рисунок, не содержащий никаких графических объектов и

Из книги Раскрутка: секреты эффективного продвижения сайтов автора Евдокимов Николай Семенович

Подробнее о шаблоне Установленный набор параметров сеанса можно сделать доступным и для рисунков, создаваемых впоследствии. Для этого следует сохранить документ как шаблон. Шаблон обычно представляет собой рисунок, не содержащий никаких графических объектов и

Из книги Графика DirectX в Delphi автора Краснов Михаил

Подробнее о склейке Склейка – это процесс идентификации поисковиком нескольких документов как копий, по итогам которого в выдаче остается только один из них (одна из страниц). При обнаружении копий поисковая машина может склеить страницы как одного сайта, так и с разных

Из книги Цифровой журнал «Компьютерра» № 197 автора Журнал «Компьютерра»

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Три вывода, которые можно сделать после обсуждения причин различий между людьми по цвету их кожи Дмитрий Шабанов Опубликовано 31 октября 2013 Две общем-топредыдущие колонки были посвящены анализу одного, в, весьма простого признака человека -

Из книги C++ для начинающих автора Липпман Стенли

4.1.4. Подробнее об идентификаторах потоков Иногда в программе возникает необходимость определить, какой поток выполняет ее в данный момент. Функция pthread_self() возвращает идентификатор потока, в котором она вызвана. Для сравнения двух разных идентификаторов предназначена

Из книги Как тестируют в Google автора Уиттакер Джеймс

9.3.1. Подробнее о точном соответствии Самый простой случай возникает тогда, когда типы фактических аргументов совпадают с типами формальных параметров. Например, есть две показанные ниже перегруженные функции max(). Тогда каждый из вызовов max() точно соответствует одному

Из книги автора

Из книги автора

Из книги автора

Немного подробнее о Buganizer Самый старый баг, зарегистрированный в Google, создан 18 мая 2001 года в 15:33 и существует до сих пор. Он называется «Test Bug», а его описание выглядит как «First Bug!». Смешно, что этот баг до сих пор случайно всплывает, когда разработчики привязывают

Основы программирования на языке VBA

Комментарии (0)

Процесс разработки программы на языке VBA - проекта , может состоять из нескольких этапов, в зависимости от конечного результата. Если необходимо получить программу, которая будет производить определенные вычисления или действия, расширяющие математические возможности стандартного приложения Microsoft Office, то достаточно создать программный модуль . Для применения этой программы можно поместить в рабочей области приложения кнопку, нажатие которой будет вызывать выполнение программы. Для этого в приложении необходимо включить панель инструментов с помощью команды Вид Панели инструментов Элементы управления , а затем создать кнопку с соответствующим программным кодом. Либо выполнять программу с помощью команды Сервис Макрос Макросы .

Разработка “полноценной” программы (для выполнения которой требуется отдельное окно, с различными элементами управления) будет включать два этапа. Первый этап - этап визуального программирования, на котором создается окно (форма ) программы, где располагаются необходимые элементы управления. Второй - этап программирования, на котором создаются части программы (процедуры ), выполняющиеся в ответ на определенные события. Событием является, например, щелчок левой кнопкой мыши на командной кнопке (событие Click), нажатие клавиши на клавиатуре (событие KeyPress) и т.д. Использовать такое приложение можно нажатием кнопки - «Запуск проекта».

2.1. Объекты, свойства и методы VBA

Одним из основных понятий VBA является объект. Объект - это то, чем вы управляете с помощью программы на языке VBA, например, форма, кнопка, рабочий лист или диапазон ячеек MS Excel. Каждый объект обладает некоторыми свойствами . Например, форма может быть видимой или невидимой в данный момент на экране. Другой пример свойства объекта - шрифт для отображения информации в ячейке (объекте) рабочего листа.

Объект содержит также список методов, которые к нему применимы. Методы - это то, что вы можете делать с объектом. Например, показать форму на экране или убрать её можно с помощью методов Show и Hide.

Таким образом, объект - это программный элемент, который имеет свое отображение на экране, содержит некоторые переменные, определяющие его свойства , и некоторые методы для управления объектом. Например, в MS Excel имеется много встроенных объектов:

Range (“ Адрес ”)

Диапазон ячеек (может включать только одну ячейку).

Cells(i, j)

Ячейка, находящаяся на пересечении i-й строки и j-го столбца рабочего листа MS Excel (i и j - целые числа).

Rows (№ строки )

Строка с заданным номером.

Columns (№ столбца )

Столбец с заданным номером

Sheets (“ Имя ”)

Лист с указанным именем.

Sheets (№ листа )

Лист с указанным номером.

WorkSheet

Рабочий лист.

Установка значений свойств - это один из способов управления объектами. Синтаксис установки значения свойства объекта следующий:

Объект. Свойство = Выражение

Основным свойством объектов Cells и Range , является Value (значение), которое, однако, можно не указывать. Например:

Range(“A5:A10”). Value = 0 или Range (“ A 5: A 10”) = 0 - в диапазон ячеек A5:A10 заносится значение 0.

Cells (2, 4). Value = n или Cells (2, 4) = n - в ячейку, находящуюся на пересечении 2-й строки и 4-го столбца (ячейка с адресом “D2”), заносится значение переменной n.

Синтаксис чтения свойств объекта следующий:

Переменная = Объект. Свойство

Например:

Xn = Cells (1, 2). Value или Xn = Range (“ B 1”). Value - переменной Xn присваивается значение из ячейки B1 текущего рабочего листа.

Синтаксис применения методов к объекту:

Объект. Метод

Например:

Sheets (2). Activate - сделать активным лист с №2.

Sheets (“Диаграмма”). Delete - удалить лист с именем “Диаграмма”.

Range("A5:A10").Clear - очистить диапазон ячеек A5:A10.

Range("A2:B10").Select - выделить диапазон ячеек A2:B10.

В MS Excel имеются объекты, которые содержат другие объекты. Например, рабочая книга содержит рабочие листы, рабочий лист содержит диапазон ячеек и т.д. Объектом самого высокого уровня является Application (приложение). Если вы изменяете его свойства или вызываете его методы, то результат применяется к текущей работе MS Excel. Например:

Application . Quit - завершение работы с Excel.

Отметим, что точка после имени объекта может использоваться для перехода от одного объекта к другому. Например, следующее выражение очищает вторую строку рабочего листа Май в рабочей книге Отчет :

Application.Workbooks(" Отчет ").Worksheets(" Май ").Rows(2).Delete

Нужно отметить следующее:

  • Можно не писать имя объекта Application , так как это подразумевается по умолчанию.
  • При работе с подобъектом уже активизированного объекта нет необходимости указывать содержащий его объект.
  • VBA использует некоторые свойства и методы, которые возвращают объект к которому они относятся (это позволяет быстро указывать нужный объект). Примеры таких свойств: ActiveCell (активная ячейка), ActiveSheet (активный лист), ActiveWorkBook (активная рабочая книга). Так, установить значение активной ячейки можно следующим образом:

ActiveCell.Value = " Да ".

2.2. Описание данных

Все объекты, которыми оперирует язык программирования VВА, относятся к определенному типу.

Тип данных определяет:

Область возможных значений переменной;

Структуру организации данных;

Операции, определенные над данными этого типа.

Типы данных подразделяются на простые (скалярные) и сложные (структурированные). У простых типов данных возможные значения данных едины и неделимы. Сложные же типы имеют структуру, в которую входят различные простые типы данных. Скалярные типы данных представлены в таблице 2.1.

Таблица 2.1. Скалярные типы VBA

Имя типа

Русское
название типа

Возможные значения

Логический

Байтовый

Длинное целое

2147483648…+2147483647

Число с плавающей точкой

3,4Е38…-1,4Е-45 для отрицательных значений. 1,4Е-45…3,4Е38 для положительных значений.

Число с плавающей точкой двойной точности

1,7Е308…-4,9Е-324 для отрицательных значений. 4,9Е-324…1,7Е308 для положительных значений.

Денежный

Десятичные числа с фиксированной позицией запятой. Возможны 15 цифр до запятой и 4 после.

Строковый

Есть два вида строк: строки фиксированной длины (до 2 16 символов) и строки переменной длины (до 2 31 символов). Данные записываются в кавычках.

Даты изменяются в диапазоне от 1.01.100г. до 31.12.9999г.

Универсальный тип, значением которого могут быть данные любого из перечисленных выше типов, объекты, значения NULL и значения ошибок ERROR.

Переменные в программе можно описывать или не описывать. В последнем случае ей будет присвоен тип Variant . Явно описывать переменную можно как в начале блока, так и в любом месте, где возникла необходимость использовать новую переменную. Лучше все переменные описывать явно и, как правило, в начале блока. Для запрета использования переменных, которые не были описаны явно, в начало программы необходимо вставить оператор Option Explicit .

2.2.1. Описание простых переменных

Описание простых переменных имеет следующий синтаксис:

Dim ИМЯ_ПЕРЕМЕННОЙ As ИМЯ_ТИПА

Одним оператором Dim можно описать произвольное число переменных, но конструкция Аs должна быть указана для каждой из них, иначе переменным без Аs будет присвоен тип Variant .

Например .

Dim X As Byte, Z As Integer, С , C лово As String

Здесь переменная Х - это переменная байтового типа, переменная Z - целого типа, переменная С - типа вариант (по умолчанию), переменная Слово - строкового типа.

2.2.2. Описание констант

Данные, не изменяющиеся внутри программы можно считать константами. Их можно описать следующим образом:

Const ИМЯ_КОНСТАНТЫ As ИМЯ_ТИПА= ПОСТОЯННОЕ_ВЫРАЖЕНИЕ

Например .

Const Pi As Double = 3.141593

2.2.3. Описание массивов

Для хранения векторов, матриц и т.д. можно использовать массивы.

Массив - это структурированный тип данных, который представляет собой последовательность ячеек памяти, имеющих общее имя и хранящих данные одного типа. Каждый элемент массива определяется индексом (номером). Количество элементов в массиве называется размерностью массива . Массив описывается следующей конструкцией:

Dim ИМЯ_МАССИВА (СПИСОК_РАЗМЕРНОСТЕЙ ) As ИМЯ_ТИПА

В списке размерностей массива каждое измерение отделяется запятой и определяется заданием нижней и верхней границ изменения индексов.

Например .

Dim X(1 TO 5) As Integer, Y(1 To 10, 1 To 20) As Double

Здесь Х - одномерный массив, состоящий из 5 элементов целого типа, Y - двумерный массив, у которого 10 строк и 20 столбцов с элементами числового типа двойной точности.

2.3. Выражения

Выражения устанавливают порядок выполнения действий над элементами данных. Выражения состоят из операндов и знаков операций. Операндами являются константы, переменные, указатели функций, выражения, взятые в скобки.

2.3.1. Виды операций

Операции бывают арифметические, отношения и логические:

- арифметические операции:
^ возведение в степень,
* умножение,
/ деление,
\ деление нацело,
mod остаток от деления,
+ плюс,
- минус;

- операции отношения :
< меньше,
> больше,
<= меньше или равно,
>= больше или равно,
= равно,
<> не равно;

- логические операции:
Not логическое отрицание,
And логическое "И",
Or логическое "ИЛИ".

Результатом логической операции может быть одно из двух значений:
True ("истина") или False ("ложь").

2.3.2. Приоритет выполнения операций

Если выражение содержит несколько операций, то приоритет их выполнения следующий:

1. Сначала выполняются арифметические операции в таком порядке, как они представлены в таблице 2.2.

Таблица 2.2. Приоритет арифметических операций

3. Последними выполняются логические операции в таком порядке, как они представлены в таблице 2.3.

Таблица 2.3. Приоритет логических операций

Описание операции

Обозначение в VВА

Логическое отрицание

Логическое "И"

Логическое "ИЛИ"

Если выражение содержит несколько операций одинакового приоритета, то порядок их выполнения слева направо. Чтобы изменить порядок действий в выражении используются круглые скобки.

Выражения бывают арифметические, отношения и логические.

Арифметические выражения записываются с помощью операндов числовых типов и арифметических операций, а результатом является числовое значение. В арифметическом выражении можно использовать стандартные математические функции, которые приведены в таблице 2.4.

Таблица 2.4. Стандартные математические функции VBA

Математическая запись

Имя функции в VBA

Описание

Возвращает значение, тип которого совпадает с типом переданного аргумента, равное абсолютному значению указанного числа.

Возвращает значение типа Double, содержащее арктангенс числа.

Возвращает значение типа Double, содержащее косинус угла.

Возвращает значение типа, совпадающего с типом аргумента, которое содержит целую часть числа.

Возвращает значение типа Double, содержащее натуральный логарифм числа.

Возвращает значение типа Double, содержащее результат возведения числа e (основание натуральных логарифмов) в указанную степень.

Возвращает значение типа Variant (Integer), соответствующее знаку указанного числа.

Возвращает значение типа Double, содержащее синус угла.

Возвращает значение типа Double, содержащее квадратный корень указанного числа.

Возвращает значение типа Double, содержащее тангенс угла.

Выражения отношения определяют истинность или ложность результата при сравнении двух операндов. Сравнивать можно данные любого одинакового типа. Результат операции отношения только логический: True - "истина" или False - "ложь".

Логические выражения. Результатом логического выражения является логическое значение True или False. Простейшими видами логических выражений являются: логическая константа, логическая переменная, логическая функция, выражение отношения. Логические операции выполняются только над операндами логического типа.

Пример . Записать 1£Х£5 и определить значение выражения при Х=3.1

Выражение в VВА будет выглядеть так:

X >=1 And X <=5

Результатом выражения будет True.

Чтобы получить перечень всех математических функций, достаточно набрать имя любой известной математической функции (например, SIN ), а затем нажать клавишу F1 Математические функции . В полученном перечне можно получить справку о назначении любой из встроенных математических функций и ее аргументе.

Чтобы получить перечень всех производных математических функций и правила их формирования, достаточно набрать имя любой известной математической функции (например, SIN ), а затем нажать клавишу F1 и ниже описания выбранной функции выбрать ссылку на Производные математические функции .

Ниже, в таблице 2.5, приведен список функций, которые могут быть получены с помощью встроенных математических функций.

Таблица 2.5. Производные математические функции

Математическая запись

Название функции

Комбинация встроенных функций

Косеканс

Котангенс

Арксинус

Atn(X/Sqr(-X*X+1))

Арккосинус

Atn(-X/Sqr(-X*X+1))+2*Atn(1)

Арксеканс

Atn(X/Sqr(X*X-1))+Sgn((X)-1)*2*Atn(1)

Арккосеканс

Atn(X/Sqr(X*X-1))+(Sgn(X)-1)*2*Atn(1)

Арккотангенс

Гиперболический синус

(Exp(X)-Exp(-X))/2

Гиперболический косинус

(Exp(X)+Exp(-X))/2

Гиперболический тангенс

(Exp(X)-Exp(-X))/(Exp(X)+Exp(-X))

Гиперболический секанс

2/(Exp(X)+Exp(-X))

Гиперболический косеканс

2/(Exp(X)-Exp(-X))

Гиперболический котангенс

(Exp(X)+Exp(-X))/(Exp(X)-Exp(-X))

Гиперболический арксинус

Log(X+Sqr(X*X+1))

Гиперболический арккосинус

Log(X+Sqr(X*X-1))

Гиперболический арктангенс

Log((1+X)/(1-X))/2

Гиперболический арксеканс

Log((Sqr(-X*X+1)+1)/X)

Гиперболический арккосеканс

Log((Sgn(X)*Sqr(X*X+1)+1)/X)

Гиперболический арккотангенс

Log((X+1)/(X-1))/2

Логарифм по основанию N



Другие новости

6.1. Объекты, методы, свойства

Visual Basic позволяет создавать программные продукты, способные с достаточной полнотой автоматизировать решение конкретных задач пользователя.

VBA является объектно-ориентированной средой, содержащей большой набор объектов, каждый из которых обладает множеством свойств и методов. Объекты и инструменты относятся к определенному классу (например, класс TextBox).

Свойства и методы также являются членами класса. С помощью свойств описывается, как выглядит объект, в частности дается информация о приемах форматирования текста, цвете и размере шрифта. Методы являются процедурами, которые могут быть выполнены для объекта (процедуры создания и удаления объекта, процедуры событий, определяющие принцип взаимодействия объекта с пользователем и т.д.).

Объекты (аналог существительному)

Объектом считается любой элемент приложения ─ ячейка, лист, рабочая книга, диаграмма. Фактически объектом является и само приложение Excel. Объекты могут включать области ячеек, рамки ячеек, окна, сценарии, стили и т.д. Каждый класс объектов имеет свое множество свойств, функций и событий.

Методы (аналог глаголу)

Метод ─ это действие, которое может быть выполнено над объектом. Методы реализуются посредством выполнения процедуры, которая является членом класса объектов.

Синтаксис вызова: Объект.Метод – указываются имя вызывающего метод объекта и имя самого метода, разделенные точкой.

Пример: Ball.Kick или Мяч.Ударить; Вода.Пить

Комбинация двоеточия и знака равенства в коде всегда указывают на параметр метода, т.е. как выполняется действие.

Методы могут иметь много параметров как обязательные, так и нет.

Пример 1: защита листа Лист1 от внесения изменения (метод Protect)

Sheets(“Лист1”).Protect

Пример 2: добавление нового рабочего листа

Worksheet.Add Before:=Worksheets(1)

Свойство (аналог прилагательному)

Свойство является атрибутом объекта, описывающим, как объект выглядит (его цвет, размер и местоположение) и как он действует (является ли видимым, ссылается ли на другой объект). При создании объекта выполняется процедура создания экземпляра этого объекта.

Для присваивания свойству нового значения, необходимо создать оператор присваивания, в котором слева от знака равенства будут указаны имя и свойство объекта (разделенные точкой), а справа ─ новое значение.

Синтаксис вызова: Объект.Свойство

Свойство всегда присутствует в левой или правой части выражений, связанных с присвоением значения. Отсутствует двоеточие перед знаком равенства.

Пример 1: переименование Лист1 на Счета:

Sheets(“Лист1”).Name =”Счета”

Событие – взаимодействие пользователя с определенным объектом на рабочем листе. Каждый класс объектов имеет собственную группу событий, на которые объекты данного класса реагируют.

Аргументы

Аргументы используются для передачи методам значений, необходимых им при решении тех задач, для реализации которых они запрограммированы. Задача выполняется корректно только в том случае, если каждый элемент имеет тип, который указан для данного метода. В качестве аргументов могут передаваться числа, текст и логические значения (истина и ложь).

Предоставляется два способа передачи аргументов методу:

─ внутренний, при котором аргументы должны быть указаны в определенном порядке;

Пример: ActiveCell.BorderAround LineStyle. Weight. ColorIndex. Color

Действие метода BorderAround объекта Range задает новые атрибуты рамки вокруг указанной области. При его использовании требуется задать аргументы для определения стиля линии, ее толщины и цвета. Причем свойство ColorIndex позволяет определить цвет с помощью числа, а свойство Color ─ с помощью константы VisualBasic.

─ внешний, при котором следования аргументов произвольно.

Пример: Range(“A1:C7”).Border Around Color Index:=3, Weight:=xlThick

Тип аргументов:

– обязательные аргументы (для редактирования параметров ЭТ)

– необязательные аргументы (Для редактирования объектов (изменение цвета, размера, рамки))

6.2. Структура, используемая в VBA

На высшем уровне иерархии стоит приложение, далее идут проекты, связанные с фактическими документами этого приложения. На третьем уровне находятся модули (модули приложения, модули пользователя, модули класса, модули форм и модули ссылок), а на последнем – их процедуры и функции.

Иерархия, используемая в VBA, представлена на рис. 6.1.

Рис. 6.1. Иерархия, используемая в VBA

Модуль – это часть программы, оформленная в таком виде, при котором допускается ее независимая трансляция. Модуль состоит из двух разделов: раздела объявлений (Declaration) и раздела процедур и функций. В первом разделе описываются глобальные переменные, типы, определенные пользователем, и перечисляемые типы, во втором – процедуры и функции.

Процедурой называется фрагмент кода (минимальная семантически законченная программная конструкция), заключенный между операторами Sub и End Sub.

Синтаксис определения процедуры:

Sub имя_процедуры(аргумент_1, аргумент_2,_, аргумент_n)

оператор VBA

оператор VBA

оператор VBA

Private – задает область видимости для процедуры – модуль, в котором она описана. Ее могут вызывать только процедуры этого же модуля

Public – процедура становится доступной для всех модулей (устанавливается по умолчанию)

Friend – процедура видима только в том проекте, где описан класс, членом которого она является.

Также в VBA используются процедуры без параметров, которые могут выступать в роли командных макросов и процедур обработки событий.

На рис. 6.2 представлен интерфейс VBA.

Рис. 6.2. Интерфейс VBA

6.3. Типы данных, используемые в VBA

6.3.1. Переменные

Переменная – это поименованная область памяти, используемая для хранения данных в течение работы процедуры.

Для использования переменной ее необходимо описать (объявить).

Синтаксис оператора описания переменной:

Dim переменная

Dim – ключевое слово, свидетельствующая о том, что объявляется переменная (dimension – размер);

Переменная – имя объявляемой переменной;

As – ключевое слово, используемое при задании типа данных (as – как);

Тип – тип данных для объявляемой переменной

Одним оператором Dim можно описать несколько переменных, перечислив их через запятую.

Dim i As Byte, j As Integer, k As Integer

В таблице 6.1. представлены основные типы данных, используемые для задания переменных.

Таблица 6.1. Типы данных

Тип данных

Значения переменной

Boolean (логический)

логические переменные, принимающие одно из двух значений: Истина или Ложь

Byte (короткий целый беззнаковый)

целое число из диапазона от 0 до 255

Integer (целый)

целые числа из диапазона от -32 768 до 32 767

Long (длинный целый)

целые числа из диапазона от -2 147 483 648 до 2 147 483 647

Currency (денежный)

переменные для денежных вычислений с фиксированным количеством разрядов после десятичной запятой; позволяют избежать накопления погрешностей при округлении

Date (дата)

переменные для хранения даты и времени

Single (с плавающей точкой одинарной точности)

числа с дробной частью от -3,40282310 38 до -1,40129810 -45

для отрицательных чисел и от 1,40129810 -45 до 3,40282310 38 для положительных чисел

Double (с плавающей точкой двойной точности)

числа с дробной частью от -1,7976931348623110 308 до -4,9406564584124710 -324

для отрицательных чисел и от 4,9406564584124710 -324 до 1,7976931348623110 308 для положительных чисел

String (строковой переменной длины)

переменные для хранения строк символов длиной от 0 до 64 Кбайт

Variant (универсальный)

Автоматическое подстраивание под данные

Object (объект)

переменные для хранения ссылок на объекты

Если при описании переменных не указывается их тип, то им автоматически присваивается Variant. Это означает, что в ячейке, соответствующей этой переменной, может храниться информация любого вида (аналог формату «Общий» в ЭТ).

Пример: Dim i, j As Integer

Это эквивалентно следующей записи: Dim i As Variant, j As Integer

Для записи одинакового формата необходимо:

Dim i As Integer, j As Integer

Для использования тех или иных переменных в разных частях программы используется так называемая область видимости.

Области видимости переменной – это область программ, где имя переменной считается допустимым (видимым), а, следовательно, возможен доступ к ее значению (рис. 6.3).

Рис. 6.3. Области видимости переменной VBA

Существуют три уровня видимости переменной и пять способов ее объявления.

1Ур. – Процедура (областью видимости является процедура, в которой переменная объявлена).

*** Оператор Dim объявляет переменную в любом месте процедуры, но всегда предшествует операторам, использующим ее. Такая переменная может существовать только во время выполнения процедуры, после окончания которой значение этой переменной теряется, а память освобождается.

*** Static (аналогичен Dim) – но! объявляет статическую переменную. После выхода из процедуры память не освобождается и значение не теряется.

2 Ур. – Модуль

*** оператор Private объявляет переменную в разделе описаний Declaration (вне процедур модуля)

*** оператор Dim (в данном случае) полностью аналогичен оператору Private

3 Ур. – Приложение

*** оператор Public объявляет переменную в разделе описаний Declaration

6.3.2. Константы

Разделяются на пользовательские и встроенные.

Пользовательские константы требуют объявления. Для этого используется оператор вида:

Const константа = значение

Const – ключевое слово, которое показывает, что объявляется константа;

As – ключевое слово, с которого начинается задание типа данных;

Константа – имя объявляемой константы;

Тип – тип данных для константы;

Значение – значение, присваиваемое константе.

Const pi As Double = 3.141592654

Const e As Double = 2.718281828

Const Message = “Завершение работы”

Можно объявлять несколько констант через запятую:

Const min = 0, max = 1000

Встроенные константы не требуют объявления. Имена встроенных констант начинаются с префикса vb, например, vbFriday.

6.4. Использование стандартных окон операционной системы Windows

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

Для ввода пользователем информации в код программы и вывод данных из него, а также для создания пользовательских диалоговых окон используются функции MsgBox и InputBox.

6.4.1. Функция MsgBox

MsgBox (“сообщение”, [кнопки, заголовок]) - эта функция отображает диалоговое окно, содержащее сообщение длиной до 1024 символов, в которое с помощью операции конкатенации можно включить значение переменных, а также (необязательно) кнопки для реакции на отображения окна (по умолчанию только кнопка ОК).

При задании сложного диалогового окна, при помощи функции MsgBox используются следующие константы:

1) Для задания внешнего вида окна сообщения (рис. 6.4):

vbCritical, vbQuestion, vbExclamation, vbInformation.

Рис. 6.4. Внешний вид окон

2) Для задания кнопок в окне сообщения:

vbOkCancel, vbAbortRetryIgnore, vbYesNOCancel, vbYesNO, vbRetryCancel.

3) Для задания дальнейших действий после нажатия на соответствующую кнопку:

vbOk, vbCancel, vbAbort, vbRetry, vbIgnore, vbYes, vbNO.

Пример процедуры 1:

Private Sub Пример_1()

y = MsgBox("Закрыть окно", vbQuestion + vbYesNoCancel, "Сообщение Windows")

Код процедуры 1 в VBA и результат выполнения программы представлен на рис. 6.5.

Рис. 6.5. Пример процедуры 1

Пример процедуры 2:

Sub Привет()

y = MsgBox("Закрыть окно", vbQuestion + vbYesNoCancel, "Сообщение Windows")

If y = vbYes Then MsgBox ("VVVVVVVVVVVVVVVVVVVV") Else

If y = vbNo Then ActiveCell = "Привет"

Код процедуры 2 в VBA и результат выполнения программы представлен на рис. 6.6.

Рис. 6.6. Пример процедуры 2

6.4.2. Функция InputBox

InputBox (“сообщение”[, заголовок] [, значение по умолчанию] [, координата x] [, координата y]) - функция, применяемая для ввода значений переменных в программу. Эта функция отображает диалоговое окно, содержащее окно ввода, кнопки ОК и Отмена, сообщение (подсказку для ввода) и (необязательно) заголовок окна, значение, вводимое по умолчанию, координаты окна по горизонтали и вертикали.

Так ввод числа можно задать командой:

a = InputBox ("первое число")

Рис. 6.7. Вид функции InputBox

6.4.3. Совместное использование функций MsgBox и InputBox

На практике для создания процедур функции MsgBox и InputBox используются совместно. Кроме того, в дополнение к ним может использоваться условный оператор If, который позволяет проверять введенные пользователем условия и на основе его выводов выдавать результат.

Условный оператор If - это оператор позволяющий задавать выполнение тех или иных действий в зависимости от заданных условий. Основными составляющими для этого служат:

1) if (если)

2) then (тогда)

3) else (иначе)

Так выражение - если a>1 то b= a+1 иначе b=a-1 будет иметь вид

If a>1 then b= a+1 else b=a-1.

Пример процедуры 3:

Компьютер должен перемножить два числа, результат вывести в одну из ячеек таблицы. Если их произведение больше 2000, то компьютер должен выдать дополнительное сообщение "Полученное значение больше 2000".

Sub пример_2()

Dim a, b, y As Long

a = InputBox("первое число")

b = InputBox("второе число")

If y < 2000 Then Range("A4") = y Else MsgBox ("Полученное значение больше 2000")

Код процедуры 3 в VBA и результат выполнения программы с разными условиями представлен на рис. 6.8.



Рис. 6.8. Пример процедуры 3

Рассмотрим программу, которая включает в себя сложную функцию MsgBox и оператор If.

Пример процедуры 4:

Вводятся два произвольных числа. Затем задаётся вопрос “Вы уверены что хотите их перемножить?” и варианты ответов: “да”, “нет”. Если ответ “да” - то числа перемножаются, и выдается сообщение с результатом, иначе действие не производится.

Sub Пример()

Dim a, b, d As Double

a = InputBox("первое число")

b = InputBox("второе число")

y = MsgBox("Вы уверены, что хотите их перемножить? ", vbCritical + vbYesNo, "Вопрос")

If y = vbYes Then d = a * b Else MsgBox ("Действие отменено")

If y = vbYes Then MsgBox (d)

Код процедуры 3 в VBA и результат выполнения программы с разными условиями представлен на рис. 6.9.



Рис. 6.9. Пример процедуры 4

6.5. Управляющие конструкции VBA

Управляющие конструкции языка программирования – это инструкции и группы инструкций, применение которых позволяет изменять по мере необходимости последовательность выполнения других инструкций программы. Данные конструкции подразделяются на ветвления и циклы. Ветвлением называется управляющая конструкция, позволяющая пропускать при выполнении те или иные группы инструкций в зависимости от значения условия. Цикл – это управляющая конструкция, представляющая возможность многократно выполнять группы инструкций до наступления какого-либо события.

6.5.1. Ветвление

Конструкция If…Then

Конструкция If…Then дает VBA указание принять простейшее из решений: если условие, идущие после оператора If, истинно, нужно выполнить следующие за ними оператор (или операторы); если же условие ложно, нужно перейти к строке, расположенной непосредственно за условной конструкцией. Однострочная конструкция:

If условие Then оператор[ы]

При использовании нескольких операторов (блок If):

If условие Then

оператор

[операторы]

Пример однострочной конструкции:

Age = InputBox("укажите свой возраст.", "Возраст")

If Age < 21 Then MsgBox "Вы не можете покупать алкогольные напитки.", "несовершеннолетний"

Рис. 6.10 Пример конструкции If then

Конструкция If…Then…Else

С помощью данной конструкции можно выбрать одно направление деятельности, если условие истинно, и другое – если оно ложно. Например, можно использовать для работы с окнами, содержащими две кнопки.

Синтаксис конструкции:

If условие Then

операторы_1

операторы_2

Если условие истинно, VBA выполняет первую группу операторов – операторы_1, если же оно ложно, осуществляется переход к строке Else, а затем выполняется вторая группа операторов – оператор_2.

Sub vozrast()

Age = InputBox("укажите свой возраст.", "Возраст")

If Age < 21 Then

MsgBox "Вы не можете покупать алкогольные напитки.", "несовершеннолетний"

Vkus = InputBox("что Вы хотите приобрести?", "Вкус")

Рис. 6.11. Пример конструкции If Then Else

Конструкция If…Then…ElseIf…Else

С помощью данной конструкции можно выбрать одно из нескольких направлений действий. Можно использовать любое количество строк с ElseIf в зависимости от сложности программы.

Синтаксис конструкции:

If условие_1 Then

операторы_1

ElseIf условие_2 Then

операторы_2

ElseIf условие_3 Then

операторы_3

операторы_4

Целесообразно использовать данную конструкцию с числом операторов ElseIf не больше 5. В этом случае лучше использовать конструкцию Select Case.

Конструкция Select Case

Вместо нескольких операторов ElseIf можно применить конструкцию Select Case для более сжатого вида программы.

Такую конструкцию рекомендуется использовать, если решение, которое необходимо принять в программе, зависит от одной переменной или от выражения, имеющего не менее трех-четырех значений. Такая переменная (или выражение) называется тестируемым случаем.

Повторяемое выражение сравнивается с выражениями, находящимися после Case. Если они совпадают, то выполняется соответствующий оператор, иначе проверяются другие выражения. В случае несовпадения ни одного из выражений, выполняются операторы, следующие за Case Else.

Синтаксис конструкции:

Select Case повторяемое_выражение

Case выражение_1

операторы_1

Case выражение_2

операторы_2

операторы

6.5.2. Циклы

Существует три типа циклов: с управляющим условием, со счетчиком и циклы по структуре данных.

В циклах с управляющим условием оператор или группа операторов повторяется, пока условие не будет выполнено. Такие циклы называются циклами Do.

Если заранее известно количество повторений тела цикла, проверять управляющее условие нет необходимости. Такие циклы называются циклами с повторяющим перечислением. Циклы такого типа подразделяются на две группы: циклы со счетчиком и циклы по структуре данных.

В циклах со счетчиком используется специальная переменная – счетчик , значение которой при каждом повторении тела цикла увеличивается или уменьшается на заданную величину – шаг цикла . Цикл завершается после того, как значение счетчика достигнет (или превысит) конечное значение счетчика цикла.

Синтаксис:

For счетчик = начальное_значение To конечное_значение Step шаг_цикла

<тело цикла>

Next счетчик

Пример вычисления суммы значений, содержащихся в нечетных ячейках первого столбца первого листа (в пределах первых 10 ячеек):

Dim I As Integer

S= 0

For I = 1 To 10 Step 2

S = S + Application.Worksheets(1).Cells(I, 1).Value

Рис. 6.12. Пример цикла 1

В циклах по структуре данных тело цикла поочередно повторяется для всех однородных объектов, составляющих массив или семейство. В этом случае в роли счетчика выступает объектная переменная.

Синтаксис:

For Each элемент In структура_данных

<тело цикла>

Next элемент

Пример последовательного вывода на экран окон сообщений с именами всех рабочих листов текущей книги:

Dim S As Worksheet

For Each S In Application.Worksheets

Рис. 6.13. Пример цикла 2

6.6. Использование элементов управления для запуска макроса и ввода данных

Для использования элементов управления на рабочем листе необходимо для каждого из элементов написать код в VBA. Для этого предварительно необходимо перейти в режим конструктора. Также в этом режиме изменяются свойства объекта в окне Properties.

Для записи программного кода элемента управления необходимо дважды щелкнуть мышью на этом элементе (рис. 6.14 а) и он автоматически перейдет в режим VBA и сформирует «операторные скобки» с учетом события пользовательской формы (рис. 6.14 б).

Рис. 6.14. Формирование операторных скобок элемента управления

События пользовательской формы

Событие - это сигнал, подаваемый, если с объектом что-то происходит. Например, кнопка может генерировать событие в ответ на щелчок мышкой по ней, строка ввода – в ответ на ввод чего-то, на щелчок мыши по ней, и т.д.

Рис. 6.15 События пользовательской формы

Некоторые виды событий:

    События мыши - одинарное (двойное) щелканье левой кнопкой мыши на объекте; нажатие (отпускание) кнопки мыши; передвижение курсора мыши по элементу управления.

    События клавиатуры - нажатие простого символа, функциональных клавиш или какого-то сочетания символов на клавиатуре.

    События формы - загрузка (Load), выгрузка (Unload) формы и пр.

Событие Click происходит, когда пользователь нажимает и отпускает кнопку мыши, в то время, когда ее указатель находится на объекте. Событие может произойти при изменении значения элемента управления.

Формат процедуры-обработчика события

Private Sub Form_Click()

Private Sub object_Click()

где object – имя объекта, к которому относится этот обработчик.

Пример:

Private Sub Form_Click()

MsgBox “Click”

Рис. 6.17. Пример создания кнопки

Написание кода программы для ЭУ

Программирование элемента управления происходит по тем же принципам, что программирование макроса.

Программирование кнопки :

Пример 1 : Написание Привет после нажатия кнопки:

Private Sub Кнопка_Click()

MsgBox "Привет:)"

Рис. 6.18. Пример 1 создания элемента управления

Пример 2: Проверка условий: пересчет таблицы

Рис. 6.19. Исходная таблица

Создаем кнопку (рис. 6.20)

Рис. 6.20. Создание кнопки для реализации примера 2

Двойной щелчок переводит в окно создания процедуры (рис. 6.21):

Рис. 6.21. Окно создания процедуры

Создаем код:

Private Sub sum_Click()

Dim I As Integer

For I = 2 To 8 Step 1

N = Cells(I, 2) * Cells(I, 3)

S = S + Cells(I, 4).Value

Cells(I + 2, 4) = S

Где Cells(I, 4) – номер ячейки, где I – строка, 4 – столбец (D).

Код рассматриваемого примера в VBA и результат выполнения программы с разными условиями представлен на рис. 6.22.




Рис. 6.22. Реализация рассматриваемого примера

6.7. Пользовательские формы, создаваемые в VBA

Пользовательские формы необходимы для создания более эффективного интерфейса взаимодействия с пользователем.

Например, вместо ввода личной информации непосредственно на рабочем листе можно создать пользовательскую форму, запрашивающую ввод данных, или форма для программы расчета данных.

Формы являются объектами, которые могут вызываться другими модулями приложения.

К формам можно добавлять пользовательские методы и свойства. Для создания в форме нового метода надо добавить процедуру, объявленную со словом Public:

Public Sub UserMethod()

операторы

Стили интерфейса:

1) однодокументный (SDI) – можно открыть только один документ, при этом нужно закрыть активный документ, чтобы открыть другой;

2) многодокументный (MDI) – поддерживает несколько форм внутри основной формы-контейнера; имеет в меню Window элементы для переключения между окнами или документами;

3) стиль explorer – окно, имеющее две панели, или области, обычно, состоящие из иерархического представления уровней информации слева и области отображения справа.

Этапы создания формы:

1. На форму помещаются нужные элементы управления и красиво размещаются.

Результат: имеем форму с элементами управления, но надписи на них стандартные: Command1, Label1, и т.д.

2. Задаются свойства формы и элементов управления

Результат: форма имеет нужный вид, на всех ЭУ понятные надписи, нужные картинки и т.д. Запуск ее невозможен в связи отсутствия кода программы.

3. Пишутся обработчики событий элементов управления.

Результат: выполнение действий в соответствии с заданием.

Д
ля вставки пользовательской формы необходимоInsert (Вставка) – UserForm (Пользовательская форма).

При отсутствии окна свойства его можно открыть, выполнив: View (Вид) Properties Window (Окно свойств).

Рис. 6.23. Интерфейс создания формы

Пример 1: Создать форму для расчета функции
, содержащую:

    место для вывода (из программы) результата расчета;

    текстовое поле для ввода исходных данных;

    кнопку для запуска программы и отмены.

После задания вида формы (рис. 6.24) следует задание кода программы.

Рис. 6.24. Создание формы для примера 1

Двойной щелчок по кнопке «Вычислить» переведет форму в редактирование кода.

Private Sub Calc_Click()

1: a = TextBox_a.Value

2: b = TextBox_b.Value

3: c = Sqr(a ^ 2 + b ^ 2)

4: Label1.Caption = "c = " & Str(c)

Private Sub Cancel_Click()

Рис. 6.25. Иллюстрация работы формы примера 1

Пользовательская форма может быть выведена из любого модуля. Для ее вывода используется метод Show. Name.Show

Private Sub VSch_Click()

Рис. 6.26. Использование метода Show

Пример 2. Создание формы для ввода пользователем переменных и управляющих выключателей с суммированием и вычитанием с отображение результата.


Рис. 6.27. Создание формы и ее код в VBA для примера 2

Private Sub CommandButton1_Click()

Dim first As Long, second As Long

first = tb1.Value

second = tb2.Value

"Если выбрана первая кнопка, складываем переменные

If ob1.Value = True Then

lab4.Caption = first + second

"Если выбрана вторая кнопка, вычитаем переменные

If ob2.Value = True Then

lab4.Caption = first - second


Рис. 6.28. Иллюстрация работы формы примера 2

Пример 3. Создание формы для ввода пользователем данных и вывода их в строки таблицы



Рис. 6.29. Создание формы для примера 3

Private Sub CB_Cancel_Click()

Private Sub CB_ok_Click()

Dim LastRow As Long

LastRow = Worksheets("Лист3").Range("A65536").End(xlUp).Row + 1

Cells(LastRow, 1).Value = tb1.Value

Cells(LastRow, 2).Value = tb2.Value

Cells(LastRow, 3).Value = tb3.Value


Рис. 6.30. Иллюстрация работы формы примера 3

Вопросы для самоконтроля

    Что такое VBA?

    Что такое объекты, методы и свойства в VBA ?

    Опишите иерархию в вVBA?

    Что такое процедура?

    Что такое элемент управления?

    Опишите синтаксис переменной?

    Какие типы констант используются в VBA?

    Для чего используются функция MsgBox и InputBox?

    Какие управляющие конструкции используются в VBA?

    Что такое событие пользовательской формы?

    Что такое пользовательская форма?

    Какие стили интерфейса используются при создании пользовательской формы?

Глоссарий

VBA (Visual Basic for Applications) - это объектно-ориентированный язык макропрограммирования высокого уровня, встроенный во все программы пакета Microsoft Office.

Макрос (или макрокоманда) - последовательность команд и функций, записанных в модуле VBA, позволяющая автоматизировать выполнение основных операций.

Элемент управления - размещаемые на рабочих листах и в диалоговых окнах объекты, предназначенные для отображения, ввода и вычисления данных.

Режим конструктора переводит Excel в режим отключения всех элементов управления на рабочем листе.

Объектом считается любой элемент приложения ─ ячейка, лист, рабочая книга, диаграмма. Объекты могут включать области ячеек, рамки ячеек, окна, сценарии, стили и т.д. Каждый класс объектов имеет свое множество свойств, функций и событий

Метод ─ это действие, которое может быть выполнено над объектом.

Свойство является атрибутом объекта, описывающим, как объект выглядит (его цвет, размер и местоположение) и как он действует (является ли видимым, ссылается ли на другой объект).

Событие – взаимодействие пользователя с определенным объектом на рабочем листе.

Модуль – это часть программы, оформленная в таком виде, при котором допускается ее независимая трансляция.

Процедурой называется фрагмент кода (минимальная семантически законченная программная конструкция), заключенный между операторами Sub и End Sub.

Переменная – это поименованная область памяти, используемая для хранения данных в течение работы процедуры

Область видимости переменной – это область программ, где имя переменной считается допустимым (видимым), а, следовательно, возможен доступ к ее значению.

MsgBox - эта функция отображает диалоговое окно, содержащее сообщение длиной до 1024 символов, в которое с помощью операции конкатенации можно включить значение переменных, а также (необязательно) кнопки для реакции на отображения окна (по умолчанию только кнопка ОК).

InputBox - функция, применяемая для ввода значений переменных в программу.

Оператор If - это оператор позволяющий задавать выполнение тех или иных действий в зависимости от заданных условий.

Управляющие конструкции языка программирования – это инструкции и группы инструкций, применение которых позволяет изменять по мере необходимости последовательность выполнения других инструкций программы

Ветвлением называется управляющая конструкция, позволяющая пропускать при выполнении те или иные группы инструкций в зависимости от значения условия.

Цикл – это управляющая конструкция, представляющая возможность многократно выполнять группы инструкций до наступления какого-либо события.

Событие элемента управления - это сигнал, подаваемый, если с объектом что-то происходит.

7. Обмен данными в Электронной таблице

VBA в Excel

Программирование в Excel с помощью VBA.

Язык VBA позволяет писать макросы в Excel. Как это делать рассматривается ниже.

Application

Application - это объект, занимающий вершину иерархии объектов в Excel. Application – это и есть Excel. Вот примеры использования Application:

окно нормальных размеров

Application.WindowState = xlNormal

окно максимальных размеров

Application.WindowState = xlMaximized

Workbooks

Workbooks - это коллекция рабочих книг, которые открыты. Каждая рабочая книга представлена объектом Workbook. Узнать сколько рабочих книг сейчас в коллекции можно так:

Dim bookCount As Integer
bookCount = Workbooks.Count
MsgBox ("Opened books = " & bookCount)

Обатиться к нужной рабочей книге в коллекции Workbooks можно обратиться по его номеру или по имени:

Workbooks.Item(2).Activate

здесь мы активизировали второй элемент коллекции Workbooks.

Другие примеры мы увидим ниже.

Workbook

Workbooks.Item(1).Save

И где же в этом примере рабочая книга Workbook? Здесь: Workbooks.Item(1), это выражение возвращает первый элемент коллекции Workbooks, а это и есть Workbook.

Закрыть рабочую книгу:

Workbooks.Item(1).Close

Sheets

Sheets - это все листы рабочей книги. Листы рабочей книги представлены двумя типами: рабочие листы - это обычные листы Excel и второй тип - это листы диаграмм. Те и другие и составляют коллекцию Sheets.

Charts

Charts - это только диаграммы рабочей книги.

Chart

Chart - это объект, представляющий одину диаграмму. Если диаграмма содержится в обычном рабочем листе, то она объектом Chart не является.

Worksheets

Worksheets - это только рабочие листы рабочей книги.

Добавим рабочий лист в коллекцию Worksheets:

Worksheet

Worksheet - это один лист рабочей книги Excel.

Все ячейки рабочего листа Worksheet:

Worksheets("Лист1").Cells

Range. Работа с ячейками в Excel

Range - это одна ячейка листа или несколько ячеек. Этот объект рассмотрим подробнее. Установим кнопку на рабочий лист Excel. Откройте панель инструментов «Элементы управления» (правой кнопкой по свободному полю панели инструментов и выбираем из выпавшего меню). В этой панели выбираем кнопку и устанавливаем её на свободное место рабочего листа, в его правой части. Правой кнопкой мыши по нашей кнопке - > Свойства. Установите значение свойства Name - CommandButton, а свойства Caption - Range Test.

Получаем:

Закройте окно свойств кнопки, и кликаем по нашей кнопке правой кнопкой мыши, из выпавшего меню выбираем «Исходный текст». Открывается окно редактора VBA, оно называется Microsoft Visual Basic. В нём уже есть заготовка обработчика нажатия на кнопку CommandButton:

Кстати, помотрите на эту заготовку, ключевое слово Sub говорит, что это процедура, а слово Private указывает, что эта процедура видна лишь в данном модуле.

Всё у нас готово для начала изучения работы с ячейками рабочего листа Excel.

Как задать активную ячейку?

Сделаем активной ячейку A2:A2:

Private Sub CommandButton_Click()
Range("A2:A2").Activate
End Sub

Определение VBA, преимущества, возможности применения

VBA (Visual Basic for Applications) - это диалект языка Visual Basic, расширяющий возможности Visual Basic и предназначенный для работы с приложениями Microsoft Office и другими приложениями от Microsoft и третьих фирм.

В принципе, как это не удивительно, при программировании в Office можно вполне обойтись без языка VBA. Подойдет любой COM-совместимый язык, например, обычный Visual Basic, VBScript, JScript, C++, Delphi, Java и т.п. Можно использовать и.NET-совместимые языки программирования - VB.NET, C# и т.п. Все возможности объектных моделей приложений Office вполне можно будет использовать. Например, если сохранить следующий код в файле с расширением *.vbs и запустить его на выполнение, то будет запущен Word, в нем открыт новый документ и впечатан текст:

Set oWord = CreateObject("Word.Application")

oWord.Visible = true

oWord.Documents.Add

oWord.Selection.TypeText ("Привет от VBScript")

Однако VBA обычно - самый удобный язык для работы с приложениями Office.

Главная причина проста - язык VBA встроен в приложения Office (и не только), и код на языке VBA можно хранить внутри документов приложений Office - документах Word, книгах Excel, презентациях PowerPoint и т.п. Конечно же, этот код можно запускать оттуда на выполнение, поскольку среда выполнения кода VBA (на программистском сленге - хост) встроена внутрь этих приложений.

В настоящее время VBA встроен:

  • во все главные приложения MS Office - Word, Excel, Access, PowerPoint, Outlook, FrontPage, InfoPath;
  • в другие приложения Microsoft, например, Visio и M icrosoft Project;
  • в более чем 100 приложений третьих фирм, например, CorelDraw и CorelWordPerfect Office 2000, AutoCAD и т.п.

У VBA есть также множество других преимуществ:

VBA - универсальный язык. Освоив его, вы не только получите ключ ко всем возможностям приложений Office и других, перечисленных выше, но и будете готовы к тому, чтобы:

  • создавать полноценные приложения на Visual Basic (поскольку эти языки - близкие родственники);
  • использовать все возможности языка VBScript (это - вообще урезанный VBA). В результате в вашем распоряжении будут универсальные средства для создания скриптов администрирования Windows (об этом - в конце курса), для создания Web-страниц (VBScript в Internet Explorer), для создания Web-приложений ASP, для применения в пакетах DTS и заданиях на MS SQL Server, для создания серверных скриптов Exchange Server и многое-многое другое.

VBA изначально был ориентирован на пользователей, а не на профессиональных программистов (хотя профессионалы пользуются им очень активно), поэтому создавать программы на нем можно очень быстро и легко. Кроме того, в Office встроены мощные средства, облегчающие работу пользователя: подсказки по объектам и по синтаксису, макрорекордер и т.п.

При создании приложений на VBA вам, скорее всего, не придется заботиться о установке и настройке специальной среды программирования и наличии нужных библиотек на компьютере пользователя - MS Office есть практически на любом компьютере.

Несмотря на то, что часто приложения VBA выполняются медленнее, чем бы вам хотелось, они нересурсоемки и очень хорошо работают, например, на сервере терминалов. Но, как правило, для программ на VBA особых требований про производительности и нет: для написания игр, драйверов, серверных продуктов они не используется. По моему опыту, чаще всего проблемы с производительностью VBA-приложений - это не проблемы VBA, а проблемы баз данных, к которым они обращаются. Если проблемы действительно в VBA (обычно тогда, когда вам требуется сложная математика), то всегда есть возможность написать важный код на C++ и обращаться к нему как к обычной библиотеке DLL или встраиваемому приложению (Add-In) для Word, Excel, Access и т.п.

Программы на VBA по умолчанию не компилируются и поэтому вносить в них исправления очень удобно. Не нужно разыскивать исходные коды и перекомпилировать программы.

В среде программистов-профессионалов считается, что самый короткий путь "с нуля" и программ типа "Hello, World" до профессиональных программ, которые делаются под заказ - именно через связку Office- VBA (а конечно, не через C++, Java или Delphi).