Программа – это четкая последовательность действий, приводящая к решению задачи.
Работа любой программы подразделяется на три этапа:
§ Ввод информации (исходных данных)
Программа на языке Excel Visual Basic состоит из одного или нескольких модулей.
Модуль – это совокупность описаний и процедур, хранящихся как единое целое. Вставка модуля осуществляется при помощи команды меню Сервис – Макрос – Редактор Visual Basic, далее Вставка – Модуль.
Процедура – последовательность совместно выполняемых инструкций, имеющая имя. Существует два типа процедур: процедура подпрограмма (Sub) и процедура-функция (Function). Имя процедуры всегда определяется на уровне модуля. В процедурах должны содержаться все исполняемые программы. Вложенность процедур в другие процедуры не допускается.
Инструкция – синтаксически завершенная конструкция, представляющая отдельное действие, описание или определение. Обычно, инструкция занимает отдельную строку программы, хотя допускается использование двоеточия (:) для размещения в одной строке нескольких инструкций. Для продолжения одной логической программной строки используется пробел и нижнее подчеркивание.
Создание реальной программы на Visual Basic .NET 1/9
Обычно, текст программы на языке Excel Visual Basic начинается с опций, которые управляют описанием переменных. Затем следует объявление глобальных переменных или констант для данного модуля, т.е. таких переменных, которые вы можете использовать во всех процедурах модуля. Далее располагаются текст функций и процедур, составляющих саму программу.
Запуск макроса осуществляется:
§ С помощью команды меню Сервис – Макрос, в появившемся диалоговом окне Макрос необходимо щелкнуть мышью на нужном названии макроса и нажать на кнопку Выполнить,
§ Из окна модуля, выбрав команду Запуск (Run) или нажав на кнопку на панели инструментов Visual Basic .
Переменные и константы
Важно различать следующие понятия:
§ Ячейка памяти – это элементы оперативной памяти, в которых хранятся данные в виде байтов.
§ Переменная – именованная область памяти, отведенная для временного хранения данных, которые могут изменяться при выполнении программы.
§ Значение переменной – это содержимое тех ячеек памяти, в которых хранится переменная.
§ Идентификатор – это лишь обозначение переменной, принятое в программе.
§ Константа – именованный элемент, сохраняющий постоянное значение в течение выполнения программы.
Тип данных
Тип указывает, что может хранить переменная: целое число, строку, дату и т.п.
Для эффективного использования памяти необходимо правильно выбрать тип переменной (табл.1).
Табл.1. Типы данных
Тип | Хранимая информация | Занимаемая память | Интервалы значений |
Целочисленные типы | |||
Byte | Целые числа | 1 байт | От 0 до 255 |
Boolean | Логические значения | 2 байта | Истина или ложь |
Integer | Целые числа | 2 байта | От –32768 до 32767 |
Long Integer | Длинные целые числа | 4 байта | +/-2.1Е9 |
Типы с плавающей точкой | |||
Single | Вещественные числа одинарной точности с плавающей точкой | 4 байта | От –3,402823Е38 до –1.401298Е-45 для отрицательных чисел и от 1.401298Е-45 до 3.442823Е38 для положительных чисел |
Double | Вещественные числа двойной точности с плавающей точкой | 8 байт | От –1.7976313486232Е308 до –4.94065645841247Е-324 для отрицательных и от 4.94065645841247У-324 до 1.7976313486232Е308 для положительных чисел |
Строковые типы | |||
String (строка фиксированной длины) | Текстовая информация (строка) | 1 байт на каждый символ | От 1 до 65400 |
String (строка переменной длины) | Текстовая информация (строка) | 10 байт + 1 байт на каждый символ | От 0 до двух миллиардов символов |
Объектные типы | |||
Object | Рисунок или ссылка на любой другой объект | 4 байта | Ссылка на объект |
Типы Variant | |||
Variant | Значения любого из перечисленных типов данных | 16 байт для чисел, 22 байта + 1 байт на каждый символ для строк | Любое числовое или строковое значение |
Прочие типы | |||
Currency | Числа, имеющие до 15 цифр до десятичной точки и 4 цифры после неё (денежные единицы) | 8 байт | От –922337203685477.5808 до 922337203685477.5808 |
Date | Информация о дате и времени | 8 байт | От 1 января 100 г. до 31 декабря 9999 г. |
Decimal | Десятичное число | 14 байт | Целое – 29 знаков Вещественное – 27 знаков после запятой |
Visual Basic 6.0. Урок первый. «Привет!!!»
Объявление переменных
Декларация переменных может быть явной и неявной. Первый способ предпочтительнее.
Синтаксис: | Dim имя переменной As тип данных |
Пример: | Dim I As Integer Dim A As Variant Dim I, j, k As integer (k – целое число, I, j — тип Variant) |
При втором способе неявного объявления переменная декларируется просто указанием её имени в тексте программы.
Источник: zdamsam.ru
9.2. Общие принципы построения vba-программы
Программа не является самостоятельным структурным элементом в иерархии объектов языка VBA, и поэтому редактор VBA распознает по именам не программы, а процедуры, модули и проекты. Любая VBA-программа обязательно содержит хотя бы одну процедуру — по той простой причине, что компилятор языка VBA может выполнять только операторы, помещенные в процедуру. Однако выполняемая программа-процедура может, в свою очередь, обращаться к одной или нескольким другим процедурам, помещенным в один или несколько модулей, входящих в состав одного или нескольких проектов.
Другими словами, правильнее будет сказать, что в VBA строки программного кода организованы в процедуры, которые размещаются в модулях, а модули размещаются в проектах. Отсюда можно сделать вывод, что программный код VBA состоит из следующих «строительных блоков»:
Оператор — это наименьшая единица VBA-кода. Он предназначен для определения переменной, установки параметров или выполнения какого-либо действия в программе.
Процедура — это отдельная единица программного кода VBA, которую можно вызывать по имени для выполнения; она может выполняться самостоятельно. Любая процедура содержит один или несколько операторов.
Модуль — это именованная единица, состоящая из одной или нескольких процедур и раздела объявлений, в котором объявляются переменные, константы и пользовательские типы данных, а также устанавливаются параметры компилятора (о них мы будем говорить ниже в этой главе).
Проект — включает в себя все модули, формы и связанные с приложением объекты, относящиеся к конкретному документу, причем проект сохраняется вместе с самим этим документом.
9.3. Написание новых макросов и процедур
Нам уже известно, что макросы представляют собой средство, с помощью которого можно описать произвольную последовательность действий пользователя для ее последующего многократного выполнения.
Обычно термин «макрос» применяется для инструкций, которые автоматически записываются с помощью специальных инструментов в приложениях Microsoft Office, а термин «процедура» применяется к коду VBA, который пишется пользователем вручную. Иначе говоря, процедура — это компьютерная программа, которая выполняет некоторые действия с объектами и сохраняется в модуле VBA. С такой, «программной» точки зрения макрос — это тоже процедура типа Sub, не имеющая входных параметров.
Макросы образуют единственный класс процедур типа Sub, которые можно запускать на выполнение непосредственно вызовом их по имени либо из 66редактора VBA, либо из самого VBA-приложения. Написать новый макрос без использования специальных автоматических средств Microsoft Office, т.е. самостоятельно написать соответствующую процедуру типа Sub, можно либо создав в редакторе VBA новый модуль, который будет содержать эту процедуру, либо поместив эту процедуру в уже существующий модуль. Для создания нового модуля необходимо выполнить следующие действия:
- Убедиться в том, что вы работаете с нужным проектом.
- Активизировать редактор VBA, нажав клавиши Alt+Fl1>.
- В окне Project Explorer выделить либо сам проект, либо один из его компонентов.
- Выбрать команду Редактора VBA Insert =>Module (Добавить=> Модуль) или щелкнуть на кнопке Insert панели инструментов Standard и выберите в раскрывшемся меню команду Module.
В результате редактор VBA откроет на экране пустое окно программного кода, предназначенное для создания нового модуля (см. рис.8.8). Следует напомнить, что новому модулю при открытии окна программного кода редактор VBA по умолчанию присваивает типовое имя Module п, где п — порядковый номер модуля, созданного в данном сеансе работы с редактором VBA. Для того чтобы модуль получил некоторое собственное имя, следует переименовать его. Для этого:
- Выбрать команду меню View =>PropertiesWindow (Вид=>Окно свойств) или щелкнуть на кнопке Properties Window в панели инструментов Standard. На экране раскроется пустое окно свойств вновь создаваемого модуля (см. рис. 9.1).
- Здесь текстовом поле Name на вкладке Alphabetic окна Properties введите новое имя модуля. Обратите внимание, что модули имеют только одно свойство — Name (Имя).
Рис. 9.1. Окно свойств модуля для ввода его имени Прежде чем создать новую процедуру в ужесуществующем модуле, необходимо сначала открыть окно Code для того модуля, в котором предполагается поместить эту процедуру. Для этого щелкните дважды на требуемом модуле в окне Project Explorer либо выделите этот модуль в указанном окне и выберите команду меню View =>Code (см. рис. 9.2):
Рис. 9.2. Окно для ввода кода (текста) модуля Следует ещё раз напомнить, что модули не хранятся в отдельных файлах, а являются частями некоторого проекта, сохраняемого в соответствующем документе VBA-приложения. Чтобы использовать один и тот же модуль в разных проектах (читай, в VBA-документах) его следует скопировать в них. Для этой цели требуемый модуль можно предварительно экспортировать, создав отдельный файл с его текстом. Потом надо выделить его в Project Explorer, после чего выбрать команду меню File =>ExportFile (Файл => Экспорт файла). В раскрывшемся на экране диалоговом окне нужно указать место сохранения экспортируемого файла и, при необходимости, изменить его имя (рис. 9.3):
- Щелчком мыши выделите в окне Project Explorer тот модуль, который требуется удалить.
- Выберите команду меню File =>Removeobject_name (Файл =>Удалить имя_объекта). Другой способ — щелкните в окне Project Explorer правой кнопкой на удаляемом модуле и выберите в раскрывшемся контекстном меню Remove object_name.
В любом случае редактор VBA выведет на экран диалоговое окно с предложением предварительно экспортировать удаляемый модуль. Поместить исходный код процедуры можно, в принципе, в любом месте модуля, независимо от того, добавляете ли вы процедуру в новый или уже существующий модуль. Для этого поместите курсор в то место в модуле, где необходимо ввести текст новой процедуры. Ключевыми словами для процедур являются операторы Sub и EndSub, т.е. новая процедура должна начинаться оператором Sub, с указанием имени процедуры, и заканчиваться оператором End Sub, который редактор VBA автоматически добавляет в строку, сразу же после того, как был введен оператор Sub. Если модуль содержит несколько процедур, то новая процедура должна начинаться после оператора End Sub предыдущей процедуры или перед оператором Sub, которым начинается следующая процедура в модуле. Надо обязательно отметить, что основными VBA-процедурами являются процедуры типа Sub (подпрограммы) и процедуры типа Function (функции). Попробуем на практике создать простейшую процедуру в Word 2007 (или Excel). Предположим, требуется написать простейшую процедуру, которая будет выводить на экран приветствие. Текст ее будет выглядеть так: SubПриветствие ()MsgBox «Привет! Я – ваша первая процедура! «EndSub Чтобы всё опробовать, создайте новый модуль с именем Приветствие и введите в окно его программного кода этот текст так, как это показано на рис. 9.4. Для этого выполните следующие действия:
- Откройте любой документ Word (или рабочую книгу Excel).
- Активизируйте редактор VBA, нажав клавиши .
- В окне Project Explorer выделите проект того документа или рабочей книги, в которой будет создана эта процедура.
- Для добавления нового модуля к проекту выберите команду Insert =>Module. На экране раскроется окно программного кода для вновь созданного модуля.
- Присвойте новому модулю имя Приветствие и, убедившись, что курсор вставки текста находится в начале первой пустой строки, введите приведенный выше программный текст.
Рис 9.4. Создание процедуры «Приветствие» ПРИМЕЧАНИЕ 7: чтобы компилятор VBA мог помогать обнаруживать синтаксические ошибки, советуем набирать ключевые слова (sub — процедура, msgbox – блок сообщения) б е з использования з а г л а в н ы х букв. Тогда, если у вас всё верно, он сам в нужных местах перейдет к заглавным буквам. Если же этого не произойдёт, значит, допущена ошибка при записи! Завершив ввод текста процедуры, надо попробовать ее выполнить. Для этого выберите команду меню редактора VBA Tools =>Macros и в диалоговом окне Macros в списке Macro Name выберите процедуру «Приветствие», после чего щелкните на кнопке Run (Выполнить). Другой вариант: если вы уже в редакторе, выберите команду меню Run =>RunSub/UserForm или просто нажмите F5>. В любом случае в окне Word (Excel) будет выведено окно сообщения с приветствием, записанным в тексте процедуры (рис. 9.5). Для закрытия этого окна щелкните на кнопке ОК.
Рис. 9.5. Результат работы новой процедуры «Приветствие»
Источник: studfile.net
Принципы разработки приложений на VBA
Аннотация: Редактор Visual Basic позволяет записывать, сохранять и модифицировать программные модули, выполнять и отлаживать программы, связанные с документами MS Office.
15.1. Среда разработки – редактор Visual Basic
Независимо от приложения в редактор VB можно перейти:
- нажав кнопку Visual Basic в группе Код вкладки Разработчик;
- с помощью функциональных клавиш Alt-F11.
Возврат в офисный документ из редактора Visual Basic выполняется:
- последней командой меню View, которая указывает на название офисного приложения, например, командой Microsoft Excel;
- нажатием на первую кнопку стандартной панели инструментов Visual Basic, определяющую приложение;
- клавишами Alt-F11 или Alt-Q.
Окна редактора VB
Основные компоненты разработки, отладки и запуска программ – это окна редактора VB. На рис.15.1 показан вид среды разработки MS Excel. Среда разработки в других офисных приложениях выглядит примерно так же.
Рис. 15.1. Окно редактора VBA
Project Window (окно проекта)
Программные компоненты документа (модули, процедуры, формы) объединяются в проект, который сохраняется на диске вместе с документом MS Office.
Проект на VBA нельзя создать независимо от документа. Каждому документу соответствует проект с именем, состоящим из двух частей: первая часть – VBAProject для MS Excel и MS PowerPoint и Project для MS Word, вторая часть – название документа в скобках. Подобное имя присваивается проекту по умолчанию.
Основное предназначение окна проекта (рис.15.1 и рис.15.2) – обеспечение навигации в проекте. Проект имеет иерархическую структуру, представляющую в виде папок все составляющие проекта: модули (Modules), формы (Forms), объекты приложения (например, Microsoft Excel Objects для MS Excel), пользовательские классы (Classes) и ссылки на другие проекты (References).
Показать окно проекта можно при помощи:
- нажатия на кнопку стандартной панели инструментов VBA;
- команды Project Explorer меню View;
- клавиш Ctrl+R.
Рис. 15.2. Окно проекта
Окно кода программы (Code)
В окне кода программы (рис.15.3) отображаются тексты процедур объекта, выделенного в окне проекта. Программа, управляющая объектом проекта, располагается на связанном с объектом процедурном листе, называемом «модуль – обработчик событий». Программы, не связанные с конкретными объектами, располагаются в стандартных модулях папки проекта Modules. В дальнейшем будем использовать термин «модуль», имея в виду, что все сказанное распространяется на модуль – обработчик событий и на стандартный модуль, если иное не оговорено особо.
- двойным щелчком на элемент в окне проекта;
- командой Code из меню View или нажатием клавиши F7 после выделения элемента проекта.
Редактор программ позволяет просматривать и редактировать процедуры модуля. Процедура – это последовательность операторов языка, начинающаяся с оператора Sub и заканчивающаяся оператором End Sub. Все операторы, заключенные между этими двумя операторами, составляют тело процедуры. Дополнительно к процедурам в начале модуля могут располагаться инструкции компилятору, операторы объявления глобальных и модульных переменных или переменных пользовательских типов.
В окне программы может отображаться текст одной процедуры (procedure view) или текст модуля целиком (full-module view). Переключение режимов просмотра выполняется нажатием соответствующей кнопки в левом нижнем углу окна программы (рис.15.3).
Вверху окна программы расположены два списка: список объектов слева и список процедур справа. Содержание списков зависит от типа объекта, для которого высвечено окно программы.
Рис. 15.3. Окно кода программы
Если это стандартный модуль, то список объектов содержит только одну строку – General, а список процедур – строку Declarations и перечень процедур модуля.
Выбор строки Declarations переводит в раздел объявления переменных, в котором располагаются инструкции компилятору и описания переменных, общих для всех процедур модуля или проекта в целом.
Если окно программы отображает процедурный лист для формы или объекта документа (рис.15.3), то дополнительно к строке General список объектов содержит перечень объектов внутри выбранной формы или объекта документа. При выделении объекта в списке справа отражается перечень событий, связанных с выделенным объектом. На рис.15.3 в окне программы, открытом для рабочей книги, в списке объектов выделен объект Listbox с именем lst_sheet, и для него открыт перечень событий.
В отличие от текстовых редакторов редактор кода программы (или просто редактор кода) не только отображает вводимый текст, но и автоматически вносит изменения. Настройка окна редактора кода выполняется на вкладке Editor команды Tools-Options (рис.15.4).
- изменяет написание ключевых слов, устанавливая прописную букву в начале слова;
- проверяет синтаксис операторов;
- высвечивает подсказку по функциям, свойствам и методам объекта;
- меняет цвет слов для команд, комментариев, синтаксических ошибок в соответствии с установками, сделанными на вкладке Editor Format.
Текст (код) программы можно создать в любом текстовом редакторе и вставить его в модуль, используя команды копирования и вставки.
Рис. 15.4. Возможности настройки редактора VBA
Окно свойств объектов (Properties Window)
Свойство – это некий атрибут объекта, например, его название. Окно свойств вызывается командой Properties меню View или нажатием на пиктограмму . Окно свойств высвечивает и позволяет изменять свойства объекта, выделенного в окне проекта или в окне формы. Если выделен стандартный модуль или проект, то в окне свойств отображается его единственное свойство – Name (имя). Если же выделен, например, объект Userform, то в окне свойств (рис.15.5) показана таблица с перечнем его свойств.
Рис. 15.5. Окно свойств объекта UserForm
Свойства можно просматривать в алфавитном порядке (вкладка Alphabetic) или с группировкой по категориям (вкладка Categorized ).
Свойства объектов можно изменять в режиме конструктора (Design time) или в режиме выполнения программы (Run time). Некоторые свойства объектов можно менять в любом режиме, а отдельные свойства подлежат изменению только в режиме конструктора или только в режиме выполнения программы. Если свойства объектов меняются только в режиме выполнения, то они никогда не видны в окне свойств объекта.
Остальные окна редактора Visual Basic, перечисленные ниже, рассматриваются в разделах, которые связаны с высвечиванием информации в них:
- Object Browser – окно просмотра объектов, их методов и свойств, доступных в разных библиотеках, модулях и пользовательских приложениях;
- Immediate Window, Locals Window, Watch Window – окна отладчика, предназначенные для изменения значений переменных и тестирования операторов, для отслеживания значений переменных, для наблюдения за ходом выполнения программы в процессе отладки.
Источник: intuit.ru