Пользовательский интерфейс VBA 1 страница

1.1 Особенности среды программирования

 

Цель: знакомство с интегрированной средой программирования VBA.

По сравнению с предыдущими поколениями Бейсик-систем MS Visual Basic for Applications (VBA) имеет ряд принципиальных отличий. VBA - мощная система программирования, позволяющая быстро и эффективно создавать многофункциональные интегрированные офисные приложения для MS Windows 95/98-‘XP. Язык VBA – это подмножество Visual Basic (VB), которое включает почти все его средства создания приложений, структуры данных и управляющие структуры, возможность создания пользовательских типов данных.

VBA отличается от VB и прочих языков программирования в следующем:

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

- VBA позволяет существенно расширить вычислительные средства MS Office;

- с помощью VBA можно легко и быстро создавать различные приложения, даже не являясь программистом;

- VBA имеет графическую инструментальную среду, обеспечивающую конструирование экранных форм и управляющих элементов;

- с помощью VBA можно программировать собственные пользовательские функции, разрабатывать макросы, создавать пользовательские меню и многое другое;

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

- VBA реализует концепцию визуального программирования, управляемого событиями. Этот язык помогает интегрировать офисные проекты в единое целое.

- VBA тесно связан с VB – компоненты, сконструированные на VB, легко используются в офисных приложениях, а VB-приложения посредством технологии Automation имеют доступ ко всем возможностям и средствам офисных приложений.

Поскольку система является «визуальной», программист (пользователь) может создавать видимую часть приложения Windows. Эта часть является основой интерфейса «программа-пользователь», с помощью которого осуществляется взаимодействие пользователя с программой. Разработка программного интерфейса осуществляется на принципах объектно-ориентированного подхода, реализованного в VBA применительно к приложениям, выполняемым под управлением Windows.

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

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

Каждое событие проявляется в определенных действиях (откликах, реакции, поведении) программы. Эти действия можно разделить на две группы.

Первая является следствием свойств объекта. Эти свойства устанавливаются программистом из некоторого стандартного перечня свойств, заданного системой программирования VBA и самой системой Windows. Примером таких действий является свертывание окна после щелчка по кнопке <Свернуть>.

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

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

 

1.2 Запуск VBA

 

Запуск интегрированной среды разработки приложений IDE (Integrated Development Environment – интегрированная среда разработки) редактора VBA осуществляется через запуск Windows-приложения MS Excel следующими способами:

1) выбрать последовательность команд Сервис→Макрос→Редактор Visual Basic;

2) нажать комбинации клавиш <Alt> + <F11>;

3) нажать кнопку Редактор Visual Basic панели инструментов Visual Basic MS Excel.

После запуска программы на экран будет выведено окно редактора VBA, показанного на рисунке 1.

Возвратиться из редактора Visual Basic в рабочую книгу можно:

1) выбрать команды View (Вид)→MS Excel;

2) нажать кнопку View MS Excel панели инструментов Standard.

Главное окно содержит все стандартные элементы, которыми обладает любое Windows-приложение: строку заголовка, строку управляющего меню, строку панелей инструментов, два окна Project-VBAProject и Properties.

Строка заголовка содержит название проекта Microsoft Visual Basic–Книга1.

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

Под строкой управляющего меню расположена строка панели инструментов (Standard), представляющая собой набор кнопок, являющихся ярлыками для команд, с помощью которых осуществляется работа в среде VBA.

 

 


 

Рисунок 1 – Вид окна редактора VBA

 

1.3 Структура редактора Visual Basic

 

Пользовательский интерфейс редактора Visual Basic включает следующие основные компоненты:

- окно проекта Project-VBAProject;

- окно редактирования кода;

- окно редактирования форм;

- окно свойств;

- панель элементов управления.

 

1.3.1 Окно проекта Project-VBAProject

 

Окно проекта Project-VBAProjectв редакторе Visual Basic активизируется выбором команды View→Project Explorer (Вид→Окно проекта) или нажатием кнопки Project Explorer панели инструментов Standard.

В окне проекта Project-VBAProject, изображенного на рисунке 2, представлена иерархическая структура файлов форм и модулей текущего проекта.

В нем перечисляются все файлы проекта, доступ к которым осуществляется при помощи двух кнопок:

- <View code> (Просмотр кода);

- <View object> (Просмотр объекта).

Файл проекта имеет расширение *.xls и содержит список всех файлов проекта. В окне отображается его структура в виде дерева, которое похоже на структуру папок в окне Explorer Windows.

 

 

Рисунок 2 – Окно проекта Project-VBAProject

 

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

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

К стандартным модулям относятся записываемые макросы. Такие модули добавляются в проект выбором команды Insert→Module (Вставка→Модуль).

К модулям объектов относятся модули рабочих книг, рабочих листов, форм и классов.

Двойным щелчком на значке модуля в окне проекта Project-VBAProject можно открыть соответствующий модуль. Значок активного модуля в окне проаекта Project-VBAProject выделяется серым цветом.

Формы создаются выбором команды Insert→UserForm (Вставка→Пользовательская форма), а модули класса - Insert→Class Module (Вставка→Модуль класса). По мере создания, добавления и удаления файлов из проекта эти изменения отображаются в окне проекта.

Удаление файла из окна проекта производится выделением значка файла с последующим выбором команды File→Remove ‘имя_модуля’ (Файл→Удалить), где ‘имя_модуля’ – имя выбранного модуля.

В окне проекта выводится список проектов всех открытых рабочих книг. Это позволяет легко копировать формы, модули из одного проекта в другой при помощи простой буксировки значка файла (для копирования файла – при нажатой клавише <Ctrl>).

 

1.3.2 Окно редактирования кода

 

Окно редактирования кода служит для ввода и изменения кода процедур и функций приложения.

Окно редактора кода для соответствующего модуля открывается двойным щелчком на значке файла в окне проекта.

Открыть модуль в редакторе кода для соответствующего объекта (например, рабочего листа) можно с помощью выделения значка этого объекта в окне проекта с последующим выбором команды View→Code (Вид→Код), представленного на рисунке 3. Код внутри модуля организован в отдельные разделы для каждого объекта, программируемого в модуле.

       
 
   

 


 

Рисунок 3 – Окно редактора кода

 

В верхней части окна кода помещены два раскрывающихся списка, облегчающих ориентацию в процедурах. Левый раскрывающийся список <Object> позволяет выбрать управляющий объект (элемент или форму), а правый <Procedure> – событие, допустимое для указанного в левом списке объекта, показанного на рисунке 4.

 

 

Рисунок 4 – Список компонентов правого раскрывающегося списка

 

В окне редактирования кода доступны два режима представления кода: просмотр кода отдельной процедуры и просмотр всего модуля. Переключение между режимами работы окна редактирования кода осуществляется следующими способами:

1) выбрать одну из двух кнопок в нижнем левом углу окна редактирования кода (левой <Procedure View>– отдельная процедура, правой <Full Module View> – все процедуры модуля);

2) установить или снять флажок Default to Full Module View (Просмотр всего модуля) вкладки Editor (Редактор) диалогового окна Options (Параметры), отображаемого на экране командой Tools→Options (Сервис→Параметры).

Для автоматического отображения списка компонентов, сведений о процедурах, функциях, свойствах и методах, а также для проверки синтаксиса нужно установить флажки, показанными на рисунке 5:

Auto List Members (Список компонентов), Auto Quick Info (Краткие сведения), Auto Syntax Check (Проверка синтаксиса) в диалоговом окне Options (Параметры)→вкладка Editor (Редактор).

Если установлен режим просмотра всех процедур модуля, то процедуры можно отображать с разделителями (горизонтальной чертой, разделяющей две соседние процедуры) или без них. Отображение или скрытие разделителей управляет флажок Procedure Separator (Разделитель процедур) диалогового окна Options (Параметры).

 

 

Рисунок 5 – Окно Options (Параметры)

Интеллектуальные возможности редактора кода

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

Например, набирая код

Range ("A1") .

после ввода точки на экране отобразится список компонентов на рисунке 6, которые логически завершают данную инструкцию. Двойной щелчок на выбранном элементе из этого списка или нажатие клавиши <Tab> вставляет выбранное имя в код программы.

 

 

Рисунок 6 – Список компонентов

Автоматическое отображение списка компонентов происходит только при установленном флажке Auto List Members вкладки Editor диалогового окна Options, отображаемого на экране выбором команды Tools→Options.

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

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

 

 

Рисунок 7 – Отображаемые сведения о вводимой процедуре

 

Автоматическое отображение на экране сведений о процедурах, функциях, свойствах и методах после ввода их имени происходит только при установленном флажке Auto Data Tips вкладки Editor диалогового окна Options, отображаемого на экране выбором команды Tools→Options.

В процессе ввода исходного кода VBA автоматически отслеживает опечатки. Всякий раз, когда нажимается клавиша <Enter>, VBA просматривает введенную строку, переводит в верхний регистр начальные буквы зарезервированных слов, а остальные их буквы – в нижний регистр (если, все было введено корректно). Кроме того, зарезервированные слова редактор VBA отображает синим цветом, добавляет пробелы вокруг знаков арифметических операций, а также операций сравнения. Если после нажатия клавиши <Enter> VBA ничего не отредактировал, то, скорее всего, он чего-то не понял в этой строке и поэтому придется искать ошибку самостоятельно.

Редактор кода также производит автоматическую проверку синтаксиса набранной строки кода сразу после нажатия клавиши <Enter>. Если после набора и нажатия клавиши <Enter> строка выделяется красным цветом, то это как раз и указывает на наличие синтаксической ошибке во введенной строке. Эту ошибку необходимо найти и исправить. Кроме того, если установлен флажок Auto Syntax Check вкладки Editor диалогового окна Options, помимо выделения красным цветом фрагмента кода с синтаксической ошибкой, на экране отображается диалоговое окно, поясняющее, какая именно ошибка возникла.

 

1.3.3 Окно редактирования форм

 

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

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

С точки зрения VBA форма представляет собой объект UserForm, со стандартной сеткой (группа регулярно расположенных точек). Сетка служит для удобства размещения элементов пользовательского интерфейса. Шаг сетки можно изменить, выполнив команду Tools→Options (Сервис→Параметры) (вкладка General (Общие)).

Как и любой объект, форма имеет свои свойства, методы и события.

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

1) перейти в редактор Visual Basic;

2) выбрать команду Insert→UserForm.

В проекте появится пустое окно редактирования форм и Панель элементов управления, изображенных на рисунке 8.

 

 

Рисунок 8 – Окно Формы

1.3.4 Окно свойств “Properties”

 

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

Для того чтобы просмотреть свойства выбранного объекта, надо выполнить следующее:

- выполнить команду меню View→Properties Window (Вид→Окно свойств);

- щелкнуть по кнопке Properties Window в панели инструментов Standard.

Окно свойств состоит из двух частей: верхней и рабочей.

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

Рабочая часть имеет две вкладки: Alphabetic (по алфавиту) и Categorized (по категориям), отображающие набор свойств выбранного объекта по алфавиту или по категориям.

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

 

 

Рисунок 9 – Окно Свойства

 

1.3.5 Окно панели элементов управления (Toolbox)

 

Инструменты и средства управления на панели элементов управления служат для того, чтобы создавать новые элементы пользовательского интерфейса. Любое окно этого интерфейса содержит различные объекты: командные кнопки, текстовые окна, ярлыки (этикетки), переключатели и т.д. Все они называются Controls (элементами управления). Эти элементы добавляются в формы путем перетаскивания их с панели элементов управления в поле формы, указанных на рисунке 10.

 

Рисунок 10 – Окно инструментов

 

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

Имеется возможность расширения средств управления, представленных на панели управления. Для этого нужно выбрать команду Tools→Additional Controls (Сервис→Дополнительные элементы) и в появившемся диалоговом окне выбрать нужное средство управления.

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

 

2 Разработка программного кода

2.1 Структура проекта VBA

 

Цель: Научить студентов разрабатывать в проекте VBA программный код с помощью пользовательских подпрограмм-функций и подпрограмм-процедур.

Проект представляет собой реестр файлов, которые необходимы для генерации исполняемого файла приложения. Реестр содержится в файле проекта с расширением *.xls.

Проект состоит из иерархической структуры файлов форм и модулей.

Формы служат для создания диалоговых окон приложений VBA. Редактор форм является основным инструментом визуального программирования.

Форма – это основа графического интерфейса Windows-приложения.

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

Модули содержат только программные инструкции, отображенные в окне «Module1(Code)». В них декларируются переменные, константы, размещаются коды пользовательских функции и процедур.

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

Стандартные модули содержат макросы. Они добавляются в проект командой меню Вставка/Модуль.

К модулям объектов относятся модули рабочих книг, листов, форм и классов. Формы добавляются в проект командой меню Вставка/UserForm, а модули классов – командой Вставка/Модуль классов.

 

2.2 Пользовательские подпрограммы-функции

 

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

Пользовательские функции строятся в стандартном модуле редактора VBA.

Процедура типа Function представляет собой группу операторов, содержащихся между оператором Function и оператором End Function в стандартном модуле. Операторы в функции обрабатывают текст, управляют входными данными или вычисляют значения. Функция вызывается в программу помещением имени функции в программный оператор с указанием требуемых аргументов (данных, обрабатываемых функцией).

Структура кода функции пользователя.

Функция состоит из трех частей: заголовка, тела функции, конца функции.

1Заголовок содержит:

- зарезервированное слово Function;

- идентификатор (имя) функции,

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

2Тело функции состоит из группы операторов

3Конец функции представлен оператором End Function

Синтаксис:

[Private | Public] FunctionИмяФункции (СписокПараметров) As Тип

Тело функции (строки кода)

ИмяФункции = ВозвращаемоеЗначение

End Function

где

[Private | Public] – необязательные ключевые слова, определяющие

область видимости функции;

Function – ключевое слово, указывающее на то, что это функция;

ИмяФункции – имя функции (задается самим пользователем);

СписокПараметров – список формальных параметров, который может

отсутствовать;

As – (как) ключевое слово, предваряющее значение типа

данных;

Тип – тип данных возвращаемого значения;

ВозвращаемоеЗначениезначение, возвращаемое функцией;

End Functionключевые слова, указывающие на окончание

блока функции.

Особенность:

1) функция вычисляет единственное результирующее значение простого типа;

2) носителем возвращаемого значения является ее имя, т.е. идентификатор Имя_функции. Поэтому в теле функции должен присутствовать хотя бы один оператор присваивания, в левой части которого стоит имя описываемой функции, причем хотя бы один оператор такого вида должен быть выполнен. Этот оператор присваивания и определяет значение, вычисляемое с помощью функции.

Пример 1.

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

Технология выполнения задания:

1 Исходные данные:

a, b, x Î R

Результат: z Î R.

2 Набрать в стандартном модуле проекта следующую пользовательскую функцию:

Function z(a, b, x)

z1 = Abs(Log(x) / Log(10)) - Sqr(Abs(Cos(x) - Exp(x)))

z2 = Abs(Tan(Abs(a * x - b)) / Sin(Abs(x)) + b)

z3 = Atn(z2 / Sqr(Abs(1 - z2 ^ 2)))

z = Log(Abs(z1 * z3))

End Function

По умолчанию она попадает в раздел Определенные пользователем списка Категория окна Мастер функций.

3 Вычислить:

- перейти из окна VBA в окно MS Excel;

- выбрать ячейку А1 и ввести число 0,126;

- выбрать ячейку А2 и ввести число 0,842;

- выбрать ячейку А3 и ввести число 0,34;

- выделить ячейку А4, в которой найти значение функции;

- выбрать команду Вставка→Функция;

- в первом окне мастера функций в списке Категория найти значение Определенные пользователем;

- в списке Функция выбрать функцию zи нажать кнопку ОК;

- во втором окне Мастера функций в поле А ввести ссылку на ячейку А1, в поле В ввести ссылку на ячейку А2, в поле Х ввести ссылку на ячейку А3 и нажать кнопку ОК.

Пример 2.

Поставка задачи. Построить функцию, которая возвращает стоимость товара по его стоимости без НДС и значению ставки НДС.

Технология выполнения задания:

1 Исходные данные:

СтоимостьБезНДС, НДС Î Z

Стоимость Î Z.

2 Набрать в стандартном модуле проекта следующую пользовательскую функцию:

Function Стоимость (СтоимостьБезНДС, НДС)

Стоимость = СтоимостьБезНДС * (1 + НДС / 100)

End Function

3 Вычислить, например, стоимость товара с учетом НДС при условии, что НДС равен 25%, а стоимость товара без учета НДС равна 1000. Для этого:

- выбрать ячейку А2 и ввести число 1000 (стоимость без НДС);

- выбрать ячейку В2 и ввести число 25 (НДС);

- выделить ячейку С2, в которой найдем значение функции;

- выбрать команду Вставка→Функция;

- в первом окне мастера функций в списке Категория найти значение Определенные пользователем

- в списке Функция выбрать функцию стоимость и нажать кнопку ОК.

4 Во втором окне Мастера функций в поле СтоимостьБезНДС ввести ссылку на ячейку А2, а в поле НДС – ссылку на ячейку В2 и нажать кнопку ОК.

 

2.3 Пользовательские подпрограммы-процедуры

 

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

Синтаксис:

[Private | Public] SubИмяПроцедуры (СписокПараметров) As Тип

Тело процедуры (строки кода)

End Sub

2.4 Данные и их описание

2.4.1 Алфавит и лексемы языка

 

Алфавит VBA включает:

- прописные и строчные буквы латинского алфавита: А-Z, a-z;

- прописные и строчные буквы кириллицы: А-Я, а-я;

- цифры от 0-9;

- символ подчеркивания «_»;

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

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

+,-,*,/,\,^,=,>,<,[,],(,), . , : ,{,},’,@,&;

- составные символы, воспринимаемые как один символ: <=, >=, <>;

- комментарии, используемые для читаемости и понятности текста программы. Представляют собой последовательность любых символов, которая начинается со знака «’» (апостроф) или с ключевого слова Rem.

Пример.

‘ Это комментарий

Rem Это тоже комментарий

Программный код VBA представляет собой последовательность лексических единиц (лексем), записанных в соответствии с принятыми синтаксическими правилами.

Лексема – это минимальная неделимая единица текста программы, которая имеет определенный смысл для компилятора.

Различают шесть классов лексем:

- свободно выбираемые и используемые идентификаторы;

- служебные (зарезервированные) слова;

- константы;

- строки (строковые константы);

- операции (знаки операций);

- разделители (знаки пунктуации).

 

2.4.2 Переменные и константы

 

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

Константа – это объект, значение которого фиксировано и не может быть изменено во время выполнения программы.

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

Правила написания идентификаторов:

1) в программе он должен быть уникальным, не должен совпадать с зарезервированными словами VBA;

2) он должен начинаться только с буквы;

3) он может состоять из букв, цифр и знака подчеркивания. Не допустимы - пробелы, точки, разделительных символов, знаков операций и др.спецсимволов. Прописные и строчные буквы различаются;








Дата добавления: 2016-03-22; просмотров: 4844;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.108 сек.