Главная      Учебники - Разные     Лекции (разные) - часть 34

 

Поиск            

 

Учебная книга: Основы программирования в среде Visual Basic for Application VBA

 

             

Учебная книга: Основы программирования в среде Visual Basic for Application VBA

Государственное образовательное учреждение

высшего профессионального образования

ОСНОВЫ ПРОГРАММИРОВАНИЯ В СРЕДЕ

VISUALBASICFORAPPLICATION (VBA)

Учебное пособие

Ростов-на-Дону

2008


УДК 681.3.06

Основы программирования в среде Visual basic for application (VBA) : учеб. пособие; Рост. гос. ун-т путей сообщения. – Ростов н/Д, 2008. – 124 с.: ил.

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

Предназначено для студентов первых курсов, изучающих дисциплину «Информатика», раздел «Алгоритмизация и программирование».

Рецензенты:


1. Основные этапы решения задач на ЭВМ

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

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

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

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

Третий этап алгоритмизация задачи. На основе математического описания необходимо разработать алгоритм решения.

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

Понятие алгоритма возникло и используется давно. Сам термин «алгоритм» ведёт начало от перевода на европейские языки имени арабского математика Аль-Хорезми (IX век). Им были описаны правила (в нашем понимании – алгоритмы) выполнения основных арифметических действий в десятичной системе счисления.

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

Исполнителем может быть не только человек, но и автомат. Компьютер – лишь частный, но наиболее впечатляющий пример исполнителя, чьё поведение основано на реализации алгоритма. Более того, создание персонального компьютера оказало воздействие на развитие теории алгоритмов, одной из областей дискретной математики.

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

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

Используются различные способы записи алгоритмов:

– словесный (запись рецептов в кулинарной книге, инструкции по использованию технических устройств…);

– графический – в виде блок-схемы;

– структурно-стилизованный (для записи используется язык псевдокода).

При составлении и записи алгоритма необходимо обеспечить, чтобы он обладал рядом свойств:

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

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

Результативность алгоритма – предполагает, что выполнение алгоритма должно завершиться получением определённых результатов.

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

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

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

Пятый этап ввод программы и исходных данных в ЭВМ с клавиатуры с помощью редактора текстов. Для постоянного хранения осуществляется их запись на гибкий или жёсткий диск.

Шестой этап тестирование и отладка программы. Исполнение алгоритма с помощью ЭВМ, поиск и исключение ошибок. При этом программисту приходится выполнять рутинную работу по проверке работы программы, поиску и исключению ошибок, и поэтому для сложных программ этот этап часто требует гораздо больше времени и сил, чем написание первоначального текста программы.

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

Контрольные примеры стремятся выбрать так, чтобы при работе с ними программа прошла все основные пути алгоритма, поскольку на каждом из путей могут встретиться свои ошибки, а детализация плана зависит от того, как поведёт себя программа на этих примерах. На одном она может «зациклиться», на другом – дать бессмысленный результат.

Сложные программы отлаживают отдельными фрагментами.

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

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

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

Языки программирования

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

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

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

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

Языки программирования должны быть понятны и человеку, и ЭВМ. Они делятся на языки низкого и высокого уровня.

Язык низкого уровня – средство записи программы простыми приказами – командами на аппаратном уровне. Такой язык отражает структуру данного класса ЭВМ, и поэтому иногда называется машинно-ориентированным языком. Пользуясь системой команд, понятной ПК, можно описать алгоритм любой сложности, но такая запись для сложных задач будет очень громоздкой и мало приспособленной для использования человеком.

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

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

Многочисленную группу составляют языки программирования высокого уровня. Средства таких языков допускают описание задачи в наглядном, легко воспринимаемом виде. Отличительной особенностью этих языков является ориентация не на систему команд той или иной ЭВМ, а на систему операторов, характерных для записи определённого класса алгоритмов.

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

Все вышеперечисленные языки – вычислительные. Более молодые – декларативные (непроцедурные) языки. Отличительная черта их – задание связей и отношений между объектами и величинами и отсутствие определенной последовательности действий (один из первых – Пролог, затем C++, Delphi, Visual Basic). Эти языки дали толчок к разработке специальных языков искусственного интеллекта и языков представления знаний.

Трансляторы

Текст программы, записанный, например, на Паскале, не может быть воспринят ЭВМ непосредственно, требуется перевести его на машинный язык.

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

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

Компилятор преобразует (транслирует) всю программу в модуль на машинном языке, после этого программа записывается в память ПК и лишь потом выполняется.

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

Любой транслятор решает следующие основные задачи:

– анализирует транслируемую программу, в частности, проверяет, содержит ли она синтаксические ошибки;

– генерирует выходную программу (её часто называют объектной или рабочей) на языке команд ЭВМ;

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


2. Элементы управления и пользовательская форма VBA

2.1 Элементы управления

VВА обладает встроенным набором элементов управления. Используя этот набор и редактор форм не трудно создать любой пользовательский интерфейс, который будет удовлетворять всем требованиям, предъявляемым к интерфейсу в среде Windows. В данной главе дан обзор встроенных элементов управления VBA. Элементы управления являются объектами. Поэтому, как любые объекты, они обладают свойствами, методами и событиями. Элементы управления создаются при помощи панели инструментов Элементы управления (Control Toolbox). На этой панели представлены кнопки, позволяющие конструировать элементы управления, а также кнопки вызова окна свойств, перехода в режим конструктора и редактор кода.

Рисунок 2.1 Панель инструментов Элементы управления

Создание элементов управления на рабочем листе или в форме, как правило, происходит на начальном этапе конструирования приложения. Иногда используется программное их создание в процессе работы приложения. Но этот подход применяется реже. Большинство элементов управления можно располагать как на рабочем листе, так и в форме. Но существуют такие элементы управления, как RefEdit, Набор страниц и Набор вкладок, которые можно располагать только в форме. Ниже приведен список основных элементов управления и соответствующих кнопок панели инструментов Элементы управления (Control Toolbox).


Элемент управления Имя Кнопка для создания элемента
Поле TextBox
Надпись Label
Кнопка CommandButton
Список ListBox
Поле со списком ComboBox
Полоса прокрутки ScrollBar
Счетчик SpinButton
Переключатель OptionButton
Флажок CheckBox
Выключатель ToggleButton
Рамка Frame
Рисунок Image
RefEdit RefEdit
Набор страниц MultiPage

Для размещения элемента управления на листе или в форме нажмите соответствующую кнопку панели инструментов Элементы управления (Control Toolbox) и с помощью мыши перетащите рамку элемента управления в нужное место. После этого элемент управления можно перемещать, изменять его размеры, копировать в буфер обмена и вставлять из буфера обмена. Для разработки простейших программ удобно использовать пиктограммы (рис. 2.2).

Рисунок 2.2

2.2 Режим конструктора

Для удобства работы с элементами управления в период их конструирования в Excel введен режим конструктора, который активизируется нажатием кнопки Режим конструктора (Design Mode) панели инструментов Элементы управления (Control Toolbox). В режиме конструктора отключена реакция элемента управления на события. Поэтому при включенном режиме конструктора можно видоизменять элемент управления и задавать его свойства. На рис. 2.3 показано создание элемента управления CommandButton (кнопка) на рабочем листе. После того как пользователь решит, что созданный элемент управления имеет тот вид, который ему нужен, и все требуемые свойства элемента управления установлены, он должен отключить режим конструктора повторным нажатием кнопки Режим конструктора (Design Mode).

Рисунок 2.3 Создание элемента управления CommandButton на рабочем листе в режиме конструктора

2.3 Установка свойств элемента управления

Для установки свойств элемента управления вручную при его конструировании необходимо выделить элемент управления и нажать кнопку Свойства(Properties) панели инструментов Элементы управления (Control Toolbox). На экране отобразится диалоговое окно Свойства (Properties)(рис. 2.4). Оно аналогично окну Свойства (Properties) редактора Visual Basic. Вручную при помощи этого окна обычно устанавливается свойство Caption, возвращающее отображаемый текст элемента управления. На рисунке 2.4 значение свойства Сaption элемента управления CommandButton изменено с установленного по умолчанию (CornmandButton1) на текст Нажми меня. Кроме того, внесены изменения в параметры свойства Font, устанавливающее шрифт выводимого на поверхности кнопки текста, а именно, увеличен размер шрифта с 8 до 12, шрифт MS Sans Serif заменен на Courier New и изменено начертание букв с обычного на полужирное. Также свойство Shadow установлено равным True, вместо False, как это имеет место по умолчанию. Свойство Shadow устанавливает, отображается ли элемент управления с тенью или без нее.

Рисунок 2.4 Диалоговое окно Свойства и элемент управления CommandButton с измененными свойствами Caption, Font и Shadow

2.4 Редактор кода

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

Click Щелчок
DblClick Двойной щелчок
GotFocus Кнопка в фокусе
LostFocus С кнопки снят фокус

Код обработки события записывается на листе модуля. Для активизации модуля в том месте, где надо ввести код по обработке события, связанного с выделенным элементом управления, или отредактировать уже написанный код достаточно нажать кнопку Исходный текст (View Code) панели инструментов Элементы управления (Control Toolbox).

Нажатие на кнопку Исходный текст (View Code) активизирует модуль с именем лист1, т. е. модуль, относящийся к рабочему листу, на котором создана кнопка (рис. 2.5). Вся рабочая книга, а также каждый рабочий лист, диаграмма или форма имеют связанные с ними модули кода. Кроме того, можно создать модули кода для макросов и модули класса.

Рисунок 2.5 Модуль кода и окно Проект


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

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

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

Private Sub Conimancffluttonl_Click()

MsgBox "Ты нажал на меня"

End Sub

2.5 Пользовательская форма UserForm

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

Семейство UserForms является семейством, компоненты которого представляют все загруженные формы UserForm в приложении. Как и все семейства, UserForms имеет свойства Count (возвращает число компонентов в семействе) и Item (возвращает определенный компонент семейства), а также метод Add (добавляет к семейству новый компонент).

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

Наиболее часто используемые свойства объекта UserForm

Name Возвращает имя пользовательской формы
Caption Возвращает текст, отображаемый в строке заголовка формы
BackColor Возвращает цвет фона формы
BorderStyle Устанавливает тип границы
Picture Указывает рисунок, отображаемый как фон формы
Left И Top Возвращают местоположение верхнего левого угла формы в пунктах
Height и Width Возвращают высоту и ширину формы в пунктах
StartUpPosition

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

– Manual (начальное значение не устанавливается),

– СenterOwner (выравнивание по центру объекта, к которому принадлежит форма),

– CenterScreen (выравнивание по центру экрана),

– Windows Default (положение верхнего левого угла экрана)

Наиболее часто используемые методы объекта UserForm

Show Отображает форму на экране
Hide Закрывает форму
Move Изменяет положение и размер формы
PrintForm Печатает изображение формы

Основные события объекта UserForm.

Initilize Происходит при отображении формы на экране
Terminate Происходит при закрытии формы

2.5.1 Семейство Controls

Доступ к семейству всех элементов управления, расположенных в пользовательской форме UserForm, осуществляется с помощью семейства Controls. Например, чтобы скрыть все элементы управления формы UserForm, можно использовать код, в котором свойству Visible элемента управления, определяющему, отображается ли этот элемент на экране или нет, устанавливается значение False:

For Each Элемент in UserFormI.Controls

Элемент.Visible = False

Next Control

2.5.2 Создание пользовательской формы

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

Шаг 1 Выберите команду Сервис, Макрос, Редактор Visual Basic (Tools, Macro, Visual Basic) для того, чтобы перейти в редактор Visual Basic.

Шаг 2 Выберите команду Вставить User Form (Insert UserForm). В редакторе Visual Basic появятся: – Окно с пользовательской формой; – Панель инструментов Панель элементов (Toolbox) (рис. 2.6).

Шаг З Используя диалоговое окно Свойства (Properties), отображаемое нажатием кнопки и Панель элементов (Toolbox), создайте из пользовательской формы диалоговое окно, показанное на рисунке 2.7. Это окно состоит из трех кнопок и одного поля. Свойство Caption пользовательской формы определите равным Песнь о воробушке и бабочке, а кнопок – равными Первый акт, Второй акт и Третий акт.

Шаг 4 Для того чтобы написать процедуру обработки события нажатия кнопки Первый акт, дважды щелкните ее. Активизируется модуль UserForm1, в который введите процедуру: Private Sub CommandButton1_Click () TextBox1.Text = "Воробышек за бабочкой прыг-прыг-прыг" End Sub

Рисунок 2.6 Окно редактора Visual Basic с пользовательской формой и панелью элементов


Для обработки событий нажатий кнопок Второй акт и Третий акт в модуле UserForm1 введите следующие две процедуры:

Private Sub ConmmandButton2_Click ()

TextBoxl.Text = "Воробышек за бабочкой скок-скок-скок"

End Sub

Private Sub CommandButton3 Click()

TextBoxl.Text = "Воробышек бабочку ням-ням-ням"

End Sub

Шаг 5 Процесс создания диалогового окна и процедур, связанньк с ним, завершен. Для того чтобы проверить, как работает созданная программа, нажмите кнопку Запуск подпрограммы/UserForm (Run). На экране на фоне рабочего листа отобразится диалоговое окно Песнь о воробушке и бабочке. Для проверки функционирования кнопок нажмите, например, кнопку Первый акт. В поле выведется сообщение Воробышек за бабочкой прыг-прыг-прыг (рис. 2.7). Для закрытия диалогового окна Песнь о воробушке и бабочке нажмите системную кнопку, расположенную в верхней правой части строки заголовка диалогового окна.

Рисунок 2.7 Редактор Visual Basic с преобразованной пользовательской формой для создаваемого приложения


2.6 Общие свойства элементов управления

Приведем основные общие свойства элементов управления.

Name Имя элемента управления
Caption Надпись, отображаемая при элементе управления
AutoSize Допустимые значения: True (устанавливает режим автоматического изменения размеров элемента управления так, чтобы на нем полностью помещался текст, присвоенный свойству Caption) и False (в противном случае)
Visible Допустимые значения: True (элемент управления отображается во время выполнения программы) и False (в противном случае)
Enabled Допустимые значения: True (пользователь вручную может управлять элементом управления) и False (в противном случае)
Height и Width Устанавливают геометрические размеры объекта (высоту и ширину)
Left и Top Устанавливают координаты верхнего левого угла элемента управления, определяющие его местоположение в форме
ControlTipText

Устанавливает текст в окне всплывающей подсказки, связанной с элементом управления. В следующем примере элементу управления CommandButton1 назначен текст всплывающей подсказки это кнопка:

CommandButton1.ControlTipText = "Это кнопка"

BackColor, ForeColor и BorderColor Устанавливают цвет заднего и переднего плана элемента управления, также его границы
BackStyle Устанавливает тип заднего фона
BorderStyle

Устанавливает тип границы. Допустимые значения:

- fmBorderStyleSingle (граница в виде контура)

- fmBorderStyleNone (граница невидима)

SpecialEffect Устанавливает тип границы. Отличается от свойства BorderStyle тем, что позволяет установить несколько типов, но одного цвета. BorderStyle позволяет установить только один тип, но различных цветов

Picture

(создание картинки)

Внедряет картинку на элемент управления. Например, на поверхности кнопки картинка отображается с помощью следующей инструкции:

CommandButtonI.Picture = _

LoadPicture("с:\my doc\Kpyг.bmp")

Функция LoadPicture(ПолноеИмяФайла) считывает графическое изображение. Аргумент ПолноеИмяФайла указывает полное имя графического файла

Picture

(удаление картинки)

После того как картинка создана на элементе управления, иногда возникает необходимость ее удалить. Это легко достигается присвоением свойству picture значения LoadPicture("")
Tag

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

Private Sub UserForm Initialize ()

Dim Элемент As Object

CommandButton1.Tag = "Показать"

CommandButton2 . Tag = "Спрятать"

CommandButton3 . Tag = "Показать"

TextBox1.Tag = "Показать"

For Each Элемент In Controls

If Элемент.Tag="Показать" Then

Элемент.Visible = True

Else

Элемент.Visible = False

End If

Next Элемент

End Sub

Цвета, устанавливаемые свойствами BackColor, Forecolor и BorderColor, задаются шестнадцатеричными числами. Если эти свойства устанавливать не при помощи окна Свойства (Properties), а программно, вместо этих шестнадцатеричных чисел удобнее использовать соответствующие постоянные, задающие цвета.

Константы, задающие цвет

Константа Значение Цвет
vbBlack 0х0 Черный
vbRed OxFF Красный
vbGreen OxFFOO Зеленый
vbYellow OxFFFF Желтый
vbBlue OxFFOOOO Синий
vbMagenta OxFFOOFF Розовый
vbCyan OxFFFFOO Голубой
vbWhite OxFFFFFF Белый

2.6.1 Соглашения об именах

При создании формы или элемента управления, VBA устанавливает свойство объекта Name (т. е. его имя) по умолчанию. Например, для первой созданной кнопки свойство Name устанавливается равным CommandButton1, для второй – CommandButton2 и т. д. При разработке приложений с одной формой имя объекта, устанавливаемое по умолчанию, обычно не вызывает никаких проблем и в этом случае имена объектов оставляют без изменения. Если приложение обладает сложной структурой и состоит из нескольких форм, будет трудно отличить первую кнопку CommandButton1 первой формы, от первой кнопки CommandButton1 второй формы. В этом случае полезно переименовать объекты так, чтобы они легче различались. Для переименования объектов и переменных в среде Windows существует соглашение об именах, называемое венгерской нотацией. Суть соглашения состоит в следующем: имя объекта начинается с короткого префикса, одинакового для объектов одного и того же рода. За префиксом следует собственно имя, отображающее суть объекта. Ниже приведены префиксы и примеры имен управляющих элементов.

Примеры префиксов и имен
Управляющий элемент Префикс Пример имени
TextBox txt txtAcount
Label lbl lblInform
CommandButton cmd cmdOK
ListBox lst lstNames
ComboBox cbo cboFirms
ScrollBar scr scrDown
SpinButton spn spnUp
OptionButton opt optChoice
CheckBox chk chkSex
ToggleButton Tgl TglSwitch
Frame fra fraStatus
Image img imgBall
RefEdit ref ref Fun
MultiPage mit rnltPages
TabStrip tab tabTwoTabs
UserForm frm frmGame

2.7 Общие методы и события элементов управления

Перечислим основные общие методы элементов управления.

Add Позволяет добавить элемент управления во время выполнения программы
Move Перемещает элемент управления
SetFocus Устанавливает фокус на вызвавшем этот метод элементе управления. Часто применяется в программах обработки ошибок
Zorder Помещает объект до или после всех пересекающихся с ним объектов

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

Click Происходит, когда пользователь выбирает элемент управления с помощью одинарного щелчка кнопкой мыши
Dbici'ick Происходит, когда пользователь выбирает элемент управления с помощью двойного щелчка кнопкой мыши
Keypress Происходит, когда пользователь нажимает любую клавишу на клавиатуре, кроме функциональных и клавиш управления курсором
Change Происходит при изменении значения элемента управления
GotFocus и LostFocus Происходит, когда элемент управления получает или теряет фокус
Error Используется при уведомлении об ошибке

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

События, связанные с нажатием кнопки мыши и перемещением мыши

Событие Событие происходит

MouseDown При нажатии кнопки мыши

MouseUp При отпускании кнопки мыши

MouseMove При перемещении указателя мыши

Синтаксис:

Private Sub object_MouseDown( ByVal Button As fmButton, _

ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

Private Sub object_MouseUp ( ByVal Button As fmButton, _

ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

Private Sub object_MouseMove( ByVal Button As fmButton,_

ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

Аргументы:

Button

Возвращает код (значение) нажатой кнопки мыши. Допустимые значения:

- fmButtonLeft или l (левая)

-fmButtonRight ИЛИ 2 (правая)

-fmButtonMiddle ИЛИ 4 (средняя)

Shift

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

fmShiftMask ИЛИ 1 (<Shift>)

fmCtrlMask ИЛИ 2 (<Ctrl>)

fmAltMask ИЛИ 4 (<Alt>) .

X и Y Возвращает значение расстояния от левого или от верхнего края формы, рамки или страницы. При событии MouseMove этим расстоянием считается путь в направлении от левого верхнего угла элемента управления по горизонтали или вертикали

Рассмотрим синтаксис процедур обработки событий при операциях drag-and-drop, связанных с элементами управления.

События, связанные с перемещением элемента управления

Событие Событие происходит

BeforeDragOver Пока совершается операция drag-and-drop

BeforeDropOrPaste Перед завершением операции drag-and-drop

Синтаксис:

Private Sub object_BeforeDragOver(ByVal Cancel As _

MSForms.ReturnBoolean, ByVal Data As DataObject, _

ByVal X As Single, ByVal Y As Single, _

ByVal DragState As fmDragState, _

ByVal Effect As MSForms.ReturnEffect, _

ByVal Shift As fmShiftState)

Private Sub object_BeforeDropOrPaste(ByVal Cancel As _

MSForms.ReturnBoolean, ByVal Action As fmAction, _

ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, _

ByVal Effect As MSForms.ReturnEffect, _

ByVal Shift As fmShiftState)

Аргументы:

Cancel Допустимые значения: False (по умолчанию, элемент управления обрабатывает событие) и True (приложение обрабатывает событие)
Data Данные, перемещаемые во время операции drag-and-drop. Эти данные размещаются в объекте DataObject. Объект DataObject это своеобразный аналог буфера обмена, в отличии от которого в нем допускается хранить только текстовую информацию
X и Y Расстояние от левого верхнего угла элемента управления по горизонтали и вертикали
DragState

Устанавливает позицию указателя мыши относительно целевого объекта. Допустимые значения:

fmDragStateEnter или 0 (указатель мыши внутри целевого элемента управления)

fmDragStateLeave или 1 (указатель мыши вне целевого элемента управления)

fmDragStateOver или 2 (указатель мыши в новой позиции, но остается внутри элемента управления)

Effect

Устанавливает операцию, производимую над объектом. Допустимые значения:

- fmDropEffectNone или 0(не копировать и не перемещать объект)

fmDropEffectCopy или 1 (копировать объект)

fmDropEffectMove или 2 (перемещать объект)

fmDropEffectCopyOrMove или 3 (копировать или перемещать объект)

Shift

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

-fmShiftMask ИЛИ 1 (<Shift>)

-fmCtrlMask ИЛИ 2 (<Ctrl>)

- fmAltMask ИЛИ 4 (<Alt>)

2.8 Стандартные объекты и элементы управления

2.8.1 Объект DataObject

Объект DataObject предназначен для передачи текстовой информации при выполнении операций drag-and-drop между элементами управления. По своему действию объект DataObject в основном аналогичен буферу обмена, но в отличие от него он может хранить только текстовую информацию, которая исчезает при закрытии приложения. Рассмотрим методы объекта DataObject.

GetText

Возвращает текстовую строку из объекта DataObject.

Синтаксис:

String = object.GetText

SetText

Копирует текстовую строку в объект DataObject.

Синтаксис:

SetText(StoreData)

- StoreData определяет данные, копируемые в

объект DataObject

StartDrag

Инициирует операцию drag-and-drop для объекта

DataObject.

Синтаксис:

ЦелаяПеременная = Object.StartDrag

- ЦелаяПеременная — возвращает тип операции drag-and-drop (с копированием или перемещением)

GetText

Возвращает текстовую строку из объекта DataObject. Синтаксис:

СтроковаяПеременная = object.GetText

- СтроковаяПеременная — переменная, которой присваивается текстовая строка, хранящаяся в

Объекте DataObject

PutInClipboard Переносит данные из объекта DataObject в буфер обмена
GetFromCiipboard

Переносит данные из буфера обмена в объект

DataObject

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


2.8.2 Поле

Элемент управления TextBox (поле) создается с помощью кнопки Поле (TextBox) панели элементов управления (рис. 2.8). В основном TextBox используется для ввода текста, который в последующем используется в программе, или для вывода результатов расчетов программы. Текст, введенный в поле, обычно в программе преобразуется либо в числа, либо в формулы

.

Рисунок 2.8 Поле в форме

Основные свойства элемента управления TextBox перечислены ниже.

Text Возвращает текст, содержащийся в поле
Visible Допустимые значения: True (поле отображается во время выполнения программы) и False (в противном случае)
Enabled Допустимые значения: True (пользователь непосредственно может вносить изменения в содержание поля) и False (в противном случае)
Multiline Допустимые значения: True (устанавливается многострочный режим ввода текста в поле) и False (однострочный режим)
Wordwrap Допустимые значения: True (устанавливается режим автоматического переноса) и False (в противном случае)
AutoSize Допустимые значения: True (устанавливается режим автоматического изменения размера поля так, чтобы весь вводимый текст помещался в нем) и False (устанавливается фиксированный размер поля)
ScrollBars

Устанавливает режим отображения в поле полос прокрутки. Допустимые значения: СЧ fmScrollBarsNone (не выводить полос прокрутки)

fmScrollBarsHorizontal (выводить горизонтальную полосу прокрутки)

fmScrollBarsVertical (выводить вертикальную полосу прокрутки)

fmScrollBarsBoth (выводить горизонтальную и вертикальную полосы прокрутки)

SelLenght, SelStart И SelText Эти свойства характеризуют выделенный в поле фрагмент текста (длина, начало и сам фрагмент текста соответственно)
MaxLength Устанавливает максимальное допустимое количество вводимых в поле символов. Если это свойство равно 0, то нет ограничений на вводимое количество символов.
PasswordChar Устанавливает символ, отображаемый при вводе пароля. Если это свойство определено, то вместо вводимых символов в поле будет отображаться установленный символ

2.8.3 Надпись

Элемент управления Label (надпись) создается с помощью кнопки Надпись (Label) панели элементов управления (рис. 2.9). В основном Label используется для отображения надписей, например заголовков, не имеющих свойства caption. Надпись не может быть изменена пользователем, но код программы во время ее выполнения может управлять текстом надписи.

Рисунок 2.9 Надпись в форме

Основные свойства элемента управления Label перечислены ниже.

Caption Возвращает текст, отображаемый в надписи
Visible Допустимые значения: True (поле отображается во время выполнения программы) и False (в противном случае)
Multiline Допустимые значения: True (устанавливается многострочный режим ввода текста в поле) и False (однострочный режим)
Wordwrap Допустимые значения: True (устанавливается режим автоматического переноса) и False (в противном случае)
AutoSize Допустимые значения: True (устанавливается режим автоматического изменения размера поля так, чтобы весь вводимый текст помещался в нем) и False (устанавливается фиксированный размер поля)

2.8.4 Кнопка

Элемент управления СommandButton (кнопка) создается с помощью кнопки Кнопка (CommandButton) (рис. 2.10). Элемент управления СommandButton в основном используется для инициирования выполнения некоторых действий, вызываемых нажатием кнопки, например запуск программы или остановка ее выполнения, печать результатов и т. д.

Рисунок 2.10 Кнопка в форме

Приведем наиболее часто используемые свойства элемента управления CоmmandButton.

Caption Возвращает текст, отображаемый на кнопке
Cancel Допустимые значения: True (устанавливаются отменяющие функции для кнопки, т. е. нажатие клавиши <Esc> приводит к тем же результатам, что и нажатие кнопки) и False (в противном случае)
Visible Допустимые значения: True (кнопка отображается во время выполнения программы) и False (в противном случае)
Enabled Допустимые значения: True (запрещено нажатие кнопки пользователем) и False (в противном случае)
Accelerator

Назначает клавишу, при нажатии на которую одновременно с клавишей <Alt> происходит запуск действий, связанных с кнопкой. Например,

CommandButton1. Accelerator = "С"

Picture

Внедряет на поверхность кнопки картинку. Например,

CommandButton1. Picture = _

LoadPicture ("с: \mydoc\Kpyг.bmp")

функция LoadPicture (ПолноеИмяФайла) считывает Графическое изображение. Аргумент ПолноеИмяФайла указывает полное имя графического файла

Default Задает кнопку по умолчанию, т. е. устанавливает ту кнопку, для которой действия, связанные с ней, будут выполняться при нажатии клавиши <Enter>

2.8.5 Список

Элемент управления ListBox (список) создается с помощью кнопки Список (ListBox) (рис. 2.11). Элемент управления ListBox применяется для хранения списка значений. Из списка пользователь может выбрать одно или несколько значений, которые в последующем будут использоваться в тексте программы.

Рисунок 2.11 Список в форме

Приведем наиболее часто используемые свойства элемента управления ListBox.


Listlndex Возвращает номер текущего элемента списка. Нумерация элементов списка начинается с нуля
ListCount Возвращает число элементов списка
Toplndex Возвращает элемент списка с наибольшим номером
ColumnCount Устанавливает число столбцов в списке
TextColumn Устанавливает столбец в списке, элемент которого возвращается свойством Text
Enabled Допустимые значения: True (запрещен выбор значения из списка пользователем) и False (в противном случае)
Text Возвращает выбранный в списке элемент
List Возвращает элемент списка, стоящий на пересечении указанных строки и столбца. Синтаксис: List(row, column)
RowSource Устанавливает диапазон, содержащий элементы списка
Control Source Устанавливает диапазон (ячейку), куда возвращается выбранный элемент из списка
MultiSelect

Устанавливает способ выбора элементов списка. Допустимые значения:

– fmMultiSelectSingle (выбор только одного элемента);

– fmMultiSelectMulti (разрешен выбор нескольких элементов посредством либо щелчка, либо нажатием клавиши <Пробел>);

– fmMultiSelectExtended (разрешено использование клавиши <Shift> при выборе ряда последовательных элементов списка)

Selected Допустимые значения: True (если элемент списка выбран) и False (в противном случае). Используется для определения выделенного текста, когда свойство MultiSelect имеет значение fmMultiSelectMulti или fmMultiSelectExtended
ColumnWidths

Устанавливает ширину столбцов списка. Синтаксис:

ColumnWidths = String

- String – строка, устанавливающая ширину столбцов.

В следующем примере устанавливается ширина каждого из трех столбцов списка:

With ListBox1

.ColumnCount = 3

.ColumnWidths = "20;30;30"

End With

ColumnHeads Допустимые значения: True (выводятся заголовки столбцов раскрывающегося списка) и False (в противном случае)
ListStyle

Допустимые значения:

– fmListStyleplain (выбранный элемент из списка выделяется цветом);

– fmListStyleOption (перед каждым элементом в списке располагается флажок и выбор элемента из списка соответствует установке этого флажка)

MatchEntry

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

– fmMatchEntryNone (режим вывода подходящего элемента в списке отключен);

– fmMatchEntryFirstLetter(выводит подходящий элемент по набранной первой букве. В этом случае, предпочтительно, чтобы элементы списка были бы упорядочены в алфавитном порядке);

– fmMatchEntryComplete (выводит подходящий элемент по полному набранному имени)

BoundColumn Устанавливает тип, возвращаемый свойством Value. А именно, если свойство BoundColumn равно 0, то свойство value возвращает индекс выбранной строки, т. е. в этом случае оно действует как свойство Listindex. Если свойство BoundColumn принимает значение из диапазона от 1 до количества столбцов в списке, то свойствоValue возвращает элемент из выбранной строки, стоящий в столбце, определенном свойством BoundColumn

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

Clear Удаляет все элементы из списка
Remove Item

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

Синтаксис:

Remove Item (index)

index — номер, удаляемого из списка элемента

Add Item

Добавляет элемент в список. Синтаксис:

Addltem ( [ item [, varIndex]])

-item — элемент (строковое выражение), добавляемый в список

-varlndex — номер добавляемого элемента

Заполнение списка

Заполнить список можно одним из следующих способов

Поэлементно, если список состоит из одной колонки(рис. 2.12)

With ListBox1

.AddItem “Июнь”

.AddItem “Июль”

.AddItem “Август”

.ListIndex = 0

End With

Рисунок 2.12 Список с одной колонкой элементов


Массивом, если список состоит из одной колонки

With ListBoxl

.List = Array("Июнь","Июль","Август")

.Listlndex = 1

End With

Из диапазона a1: B4, в который предварительно введены элементы списка. Результат выбора (индекс выбранной строки) выводится в ячейку

С1

With ListBoxl

.ColumnCount = 2

.RowSource = "A1:B4"

.ControlSource = "С1"

.BoundColumn = 0

End With

Поэлементно, если список состоит из нескольких колонок, например двух

With ListBoxl

.ColumnCount = 2

.Addltem "Июнь"

.ListfO, 1) = "Сессия"

.Addltem "Июль"

.Listfl, 1) = "Каникулы"

.Addltem "Август"

.List (2, 1) = "Каникулы"

End With

Массивом, если список состоит из нескольких колонок, например двух

Dim A (2, 1) As String

A(0, 0) = "Июнь"

A(0, 1) = "Сессия"

A(1, 0) = "Июль"

А(1, 1) = "Каникулы"

A(2, 0) = "Август"

A(2, 1) = "Каникулы"

With ListBox1

.ColumnCount = 2

.List = A End With

Выбор нескольких элементов из списка

Свойство Multiselect позволяет устанавливать режим, при котором допустим выбор нескольких элементов из списка. Свойство Selected предоставляет возможность проверить, выбран ли элемент с указанным индексом. На рис. 2.13 показан выбор нескольких элементов из списка. Приведём пример использования этих свойств при вычислении среднего значения выбранных в списке элементов.


Рисунок 2.13 Выбор нескольких элементов из списка

With ListBox1

.List = Array(1, 3, 4, 5, 6, 7, 8, 9)

.Listlndex = 0

.MultiSelect = fmMultiSelectMuIti

Среднее = 0

n = 0

For i = 0 То .ListCount – 1

If .Selected(i) = True Then

n = n + l

Среднее = Среднее + .List(i)

End If

Next I

End With

Среднее = Среднее / n

2.8.6 Поле со списком

Элемент управления СоmbоВох (поле со списком) создается с помощью кнопки Поле со списком (ComboBox) (рис. 2.14). Элемент управления ComboBox применяется для хранения списка значений. Он сочетает в себе функциональные возможности списка ListBox и поля TextBox. В отличие от ListBox, в элементе управления СomboВох, отображается только один элемент списка. Кроме того, у него отсутствует режим выделения нескольких элементов списка, но он позволяет вводить значение, используя поле ввода, как это делает элемент управления TextBox.

Свойства объекта СomboВох, такие как Listlndex, ListCount, Enabled, List и методы Clear, RemoveItem и AddItem аналогичны соответствующим свойствам и методам списка ListBox. Кроме того, у него есть ряд уникальных свойств.

Рисунок 2.14 Поле со списком в форме

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

DropButtonStyle

Устанавливает вид раскрывающегося списка. Допустимые значения:

– FmDropButtonStylePlain(кнопка без символов);

– FmDropButtonStyleArrowDisplays (кнопка со стрелкой);

– FmDropButtonStyleEllipsis (кнопка с эллипсом);

– FmDropButtonStyleReduce (кнопка с линией)

ListRows Устанавливает число элементов, отображаемых в раскрывающемся списке
MatchRequired Допустимые значения: True (в поле ввода раскрывающегося списка нельзя ввести значения, отличные от перечисленных в списке, т. е. в поле со спискам отключается функция поля ввода) и False (в противном случае)
MatchFound Допустимые значения: True (среди элементов раскрывающегося списка имеется элемент, совпадающий с вводимым в поле ввода раскрывающегося списка) и False (в противном случае)

2.8.7 Полоса прокрутки и счетчик

Элемент управления ScrollBar (полоса прокрутки) создается с помощью кнопки Полоса прокрутки (ScrollBar) (рис. 2.15).

Рисунок 2.15 Полоса прокрутки и счетчик в форме

Приведем наиболее часто используемые свойства элемента управления ScrollBar.

Value Возвращает текущее значение полосы прокрутки (только целые неотрицательные числа)
Min Минимальное значение полосы прокрутки (только целые неотрицательные числа)
Max Максимальное значение полосы прокрутки (только целые неотрицательные числа)
SrnallChange Устанавливает шаг изменения значения при щелчке по одной из стрелок полосы прокрутки
Enabled Допустимые значения: True (пользователь может изменить значение полосы прокрутки) и False (в противном случае)
Visible Допустимые значения: True (полоса прокрутки отображается во время выполнения программы) и False (в противном случае)

Элемент управления SpinButton (счетчик) создается с помощью кнопки Счетчик (SpinButton) (рис. 2.15). Элемент управления SpinButton по своим функциональным возможностям аналогичен полосе прокрутки. Если не быть чрезмерным буквоедом, то можно сказать, что счетчик – это полоса прокрутки без ползунка. Счетчик имеет те же свойства Value, Min, Mах, Enabled, Visible и SmallChange, что и полоса прокрутки.


2.8.8 Переключатель

Элемент управления OptionButton (переключатель) создается с помощью кнопки Переключатель (OptionButton) (рис. 2.16). Он позволяет выбрать, один из нескольких взаимоисключающих параметров или действий. Переключатели обычно отображаются группами, обеспечивая возможность выбора альтернативного варианта.

Рисунок 2.16 Переключатель в форме.

Приведем наиболее часто используемые свойства элемента управления OptionButton.

Value Возвращает True, если переключатель выбран и False в противном случае
Enabled Допустимые значения: True (пользователь может выбрать переключатель) и False (в противном случае)
Visible Допустимые значения: True (переключатель отображается во время выполнения программы) и False (в противном случае)

Capture

...................................................

Надпись, отображаемая рядом с переключателем

Рассмотрим способ использования переключателей на примере классической игры «Орел и Решка». Выбирая один из двух переключателей, игрок загадывает один из вариантов: орел (1 для компьютера) или решка (0 для компьютера). Не зная о выборе игрока, компьютер синтезирует с равной вероятностью либо 0, либо 1, что моделирует бросание монеты. Если игрок угадал правильную сторону монеты, подброшенную компьютером, то он выигрывает. В противном случае выигрывает компьютер. Компьютер информирует игрока о результате игры. На рис. 2.17 приведено диалоговое окно, отображаемое на экране в случае проигрыша игрока.

Рисунок 2.17 Диалоговое окно, отображаемое на экране при проигрыше игрока

Для создания приложения, моделирующего игру «Орел и Решка», с помощью пользовательской формы UserForm1 создадим диалоговое окно, показанное на рис. 2.18, а в модуле UserForm1 введем следующую процедуру, синтезирующую отклик на нажатие кнопки Бросание монеты.

Рисунок 2.18 Диалоговое окно игры Орел-Решка

Private Sub CommandButtonl_Click()

' Генерация с равной вероятностью либо 0 (решка), либо 1 (орел),

' т. е. моделирование бросания монеты

Randomize

Монета = Int(2 * Rnd)

' Сравнение результата бросания монеты компьютером

' с ситуацией, если игрок загадал "Орел"

If OptionButtonl.Value = True Then

If Монета = 0 Then MsgBox "He везет. Займись-ка лучше изучением VBA"

If Монета = 1 Then MsgBox "Везунчик. Поздравляю, ты выиграл."

End If

' Сравнение результата бросания монеты компьютером

' с ситуацией, если игрок загадал "Решка"

If OptionButton2.Value = True Then

If Монета = 1 Then MsgBox "He везет. Займись-ка лучше изучением VBA"

If Монета = 0 Then MsgBox "Везунчик. Поздравляю, ты выиграл"

End If

End Sub

2.8.9 Рамка

Элемент управления Frame (рамка) создается с помощью кнопки Рамка (Frame) (рис. 2.19). Он используется для визуальной группировки элементов управления. Основным свойством рамки является Capture, отображающее надпись рамки.

2.8.10 Флажок и выключатель

Элемент управления СheckBox (флажок) создается с помощью кнопки Флажок (Checkbox) (рис. 2.20). Этот элемент управления предоставляет пользователю возможность выбора. Флажок обычно имеет два состояния: установленное и сброшенное, но может настраиваться на выбор из трех альтернатив. Флажок имеет те же свойства Value, Enabled, Visible и Capture, что и переключатель. Кроме того, флажок обладает уникальным свойством TripleState, позволяющим производить выбор из трех альтернатив. Свойство TripieState может принимать два значения: False (выбор из двух альтернатив True и False) и True (выбор из трех альтернатив True, False и Null).


Рисунок 2.19 Рамка в форме

Рисунок 2.20 Флажок и выключатель в форме

Элемент управления ToggleButton (выключатель) создается с помощью кнопки Выключатель (ToggleButton) (рис. 2.20). Этот элемент управления предоставляет пользователю те же возможности, что и флажок.

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

Private Sub UserForm_Initialize()

ToggleButtonl.Value = True ToggleButton2.Value = False ToggleButton3.TripleState = True

ToggleButton3.Value = Null

CheckBoxl.Value = True CheckBox2.Value = False CheckBox3.TripleState = True CheckBox3.Value = Null

End Sub


Рисунок 2.21 Три допустимых состояния выключателя и флажка

2.8.11 Рисунок

Элемент управления Image (рисунок) создается с помощью кнопки Рисунок (Image). Он используется для отображения графических файлов в формате bmp, cur, gif, ico, jpg и wmf. Перечислим некоторые из его свойств, используемых для управления выводом изображения.

AutoSize Допустимые значения: True (рисунок автоматически изменяет размер для того, чтобы отобразить изображение целиком) и False (в противном случае).
Picture

Задает отображаемый графический файл. Используется с функцией LoadPicture.

Синтаксис:

Picture = LoadPicture(ПолноеИмяФайла)

– ПолноеИмяФайла – полное имя отображаемого графического файла

PictureSizeMode

Устанавливает масштабирование рисунка. Допустимые значения:

– fmPictureSizeModeClip (не помещающиеся в границах объекта части рисунка обрезаются);

– fmPictureSizeModeStretch (рисунок масштабируется так, чтобы он занимал всю поверхность объекта);

– fmPictureSizeModeZoom (рисунок масштабируется с cохранением относительных размеров так, чтобы он помещался целиком внутри объекта)

PictureAlignment

Устанавливает расположение рисунка внутри объекта. Допустимые значения:

– fmPictureAlignmentTopLeft (в верхнем левом углу);

– fmPictureAlignmentTopRight (в верхнем правом углу);

– fmPictureAlignmentCenter (в центре);

– fmPictureAlignmentBottomLeft (в нижнем левом углу);

– fmPictureAlignmentBottomRight (в нижнем правом углу)

PictureTiling Допустимые значения: True (объект покрывается мозаикой из рисунка) и False (в противном случае)

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

Private Sub UserForm_Initialize()

With Image1

.PictureAlignment = fmPictureAlignmentTopLeft

.PictureSizeMode = fmPictureSizeModeZoom

.Picture = LoadPicture("c:\Face.bmp")

End With

With Image2

.PictureAlignment = fmPictureAlignmentTopLeft

.PictureSizeMode = fmPictureSizeModeStretch

.Picture = LoadPicture("с:\Face.bmp")

End With

With Image2

.PictureAlignment = fmPictureAlignmentTopLeft .PictureSizeMode = fmPictureSizeModeStretch

Picture = LoadPicture("c:\Face.bmp")

End With

With Image3

.PictureAlignment = fmPictureAlignmentTopLeft .PictureSizeMode = fmPictureSizeModeClip

.Picture = LoadPicture("c:\Face.bmp")

End With

With Image4

.PictureAlignment = fmPictureAlignmentTopLeft

.PictureTiling = True

.Picture = LoadPicture("c:\Face.bmp")

End With

End Sub

Рисунок 2.22 Четыре примера размещения рисунка

2.8.12 Ссылки на ячейки и диапазоны

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

Рисунок 2.23 Элемент управления RefEdit в форме


2.8.13 Набор страниц

Элемент управления MultiPage (набор страниц) создается с помощью кнопки Набор страниц (MultiPage) (рис. 2.24). Этот элемент управления реализует многостраничные диалоговые окна. Заголовки страниц отображаются на вкладках. Переход от страницы к странице осуществляется выбором вкладки посредством щелчка кнопкой мыши.

Рисунок 2.24 Набор страниц в форме

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

Объект MultiPage содержит в себе семейство Pages, являющееся набором всех страниц, входящих в этот объект.

Перечислим свойства объекта MultiPage.

Value и

BoundValue

Возвращают номер активной страницы. Нумерация производится с нуля
MultiRow Допустимые значения: True (если ярлыки не помещаются в одну строку, то они выводятся в несколько строк) и False (если ярлыки не помещаются в одну строку, то появляется полоса прокрутки, позволяющая переходить от страницы к странице)
Selectedltem Возвращает выбранную страницу

Семейство Pages, содержащее все страницы, входящие в объект MultiPage, имеет единственное свойство Count, возвращающее число элементов семейства. Кроме того, у семейства Pages имеются следующие методы.

Add

Создаетновуюстраницу. Синтаксис:

Set Object = object.Add( [ Name [, Caption [, index]]])

object – семейство Pages

Name – имя страницы

Сaption – текст, отображаемый на ярлыке страницы

index – номер страницы, нумерация страниц производится с 0

Clear Удаляет все страницы из семейства Pages
Remove Удаляет страницу из семейства Pages
Item

Возвращает страницу со специфицированным индексом.

Синтаксис: Set Object = object.Item(collectionindex)

2.8.14 Набор вкладок

Элемент управления TabStrip (набор вкладок) создается с помощью кнопки Набор вкладок (TabStrip) (рис. 2.25). Он позволяет создать несколько вкладок в диалоговом окне. Объект TabStrip содержит в себе семейство Tabs, представляющее собой набор всех вкладок. Объект TabStrip и семейство Tabs обладают теми же свойствами и методами, что и объект MultiPage и семейство Pages.

Рисунок 2.25 Набор страниц в форме


2.9 Последовательность выбора элементов управления

Последовательность перехода от одного элемента управления к другому определяет порядок, в соответствии с которым активизируются эти элементы управления при нажатии клавиши <Таb>. Для установки последовательности перехода в пользовательской форме необходимо: 1 Находясь в редакторе Visual Basic выбрать команду Вид, Последовательность перехода (View, Tab Order). 2 В появившемся диалоговом окне Последовательность перехода (Tab Order) с помощью клавиш Вниз (Move Down) и Вверх (Move Up) изменить порядок выделенного элемента управления в зависимости от потребности (рис. 2.26).

Рисунок 2.26 Диалоговое окно Последовательность перехода

Другим способом задания последовательности перехода является определение свойства TabIndex элемента управления. При этом надо помнить, что начальному элементу соответствует значение свойства TabIndex, равное 0, второму – 1, третьему – 2 и т. д.

2.10 Диалоговые окна

2.10.1 Инициализация и отображение диалогового окна

Инициализировать и отобразить диалоговое окно на экране очень просто. Инициализация производится при помощи процедуры обработки события Initilize формы UserForm. Отображение диалогового окна на экране осуществляется методом Show. Инструкцию с методом Show обычно помещают в процедуру, которая связана с командой пользовательского меню, кнопкой панели инструментов или элементом управления, как правило, кнопкой диалогового окна.

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

Рисунок 2.27 Диалоговое окно Периодических выплат


Private Sub UserForm_Initialize()

' Процедура инициализации и активизации диалогового окна‘

' Первоначальный выбор переключателя Гистограмма

OptionButton1.Value = True

' Назначение клавише <Enter> функции кнопки Вычислить

With CommandButton1

.Default = True

.ControlTipText = "Вычисление процентных ставок" & Chr(13) & _

"составление отчета на рабочем листе"

End With

CommandButton2.ControlTipText = "Кнопка отмены"

On Error GoTo Сообщение0

With Image1

' Установка такого же цвета границы элемента управления Рисунок,

' как и его фон

.BorderColor = .BackColor

' Загрузка рисунка, соответствующего переключателю Гистограмма

.Picture = LoadPicture("VBA3_F1.BMP") End With

UserForm1.Show

Exit Sub

' В случае отсутствия файла с рисунком отображается сообщение

Сообщение0:

If Err.Number Then

MsgBox "Нет графического файла “VBA3_F1.BMP." & Chr(13) &

"Работаем без картинки", vbCritical, "Выплаты"

End If

Resume Next

End Sub

2.10.2 Закрытие диалогового окна

В VBA диалоговые окна работают в режиме модального диалога. Это означает, что пользователь, прежде чем перейти к выполнению действий, не связанных с текущим активным диалоговым окном, должен его закрыть. Закрытие диалогового окна производится методом Hide. Следующая процедура является примером процедуры закрытия диалогового окна. Эта процедура активизируется при нажатии кнопки CommandButton2 диалогового окна UserForm1 и выполняет только одну инструкцию, осуществляющую закрытие этого диалогового окна.

Private Sub CommandButton2_Click()

‘ Процедура закрытия диалогового окна

UserForm1.Hide

End Sub

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

2.10.3 Отображение встроенных диалоговых окон

VBA позволяет отображать программно на экране встроенные диалоговые окна в Excel наряду с пользовательскими диалоговыми окнами. Все встроенные диалоговые окна в Excel образуют семейство Dialogs, индекс которого специфицирует активизируемое диалоговое окно. Отображение встроенного диалогового окна на экране осуществляется методом Show. Например, следующая процедура при нажатии кнопки активизирует диалоговое окно Открытие документа (Open) (рис. 2.28).

Private Sub CommandButton1_Click()

Application.Dialogs(xlDialogOpen).Show

End Sub

Рисунок 2.28 Диалоговое окно Открытие документа

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

XlDialogFindFile Диалоговое окно Открытие документа (Open) при поиске файла
xlDialogPivotTableWizard

Диалоговое окно Мастер сводных таблиц (Pivot Table Wizard)

Wizard)

xlDialogSaveAs Диалоговое окно Сохранить как (Save as)
xlDialogSaveWorkbook Диалоговое окно Сохранить (Save)
xlDialogPrint Диалоговое окно Печать (Print)

3. Типы данных, переменные и константы

3.1 Типы данных

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

В VBA имеются следующие основные типы данных:

Тип данных

Размер (байт)

Диапазон значений

Byte (байт)

1

От 0 до 255

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

2

True или False

Integer (целое число)

2

От -32 768 до 32 767

Long (длинное целое число)

4

От -2 147 483 648 до 2 147 483 647

Single (число с плавающей запятой обычной точности)

4

От -3,402823Е38 до -1,401298Е-45 для отрицательных значений

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

8

От -1,79769313486232Е308 до

-4,94065645841247Е-324 для отрицательных значений;

от 4,94065645841247Е-324 до 9769313486232Е308 для положительных значений

Decimal (масштабируемое целое число)

14

+/-79228162514264337593543950335 с 28 знаками справа от запятой;

минимальное ненулевое значение имеет вид +/-0,0000000000000000000000000001

Date (даты и время)

8

От 1 января 100 г. до 31 декабря 9999г.
Object (объект) 4

Любой указатель объекта

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

10 + длина

строки

От 0 до приблизительно 2 миллиардов
String (строка постоянной длины)

длина

строки

От 1 до приблизительно 65 400
Variant (числовые подтипы) 16

Любое числовое значение вплоть до границ диапазона для типа Double

Variant (строковые подтипы)

22+длина строки

От 0 до приблизительно 2 миллиардов
Тип данных, определяемый пользователем (с помощью ключевого слова Туре)

Объём определяется элементами

Диапазон каждого элемента определяется его типом данных

3.2 Описание переменных

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

Синтаксис:

Dim [WithEvents] ИмяПеременной[([Индексы]]] [As [New] Тип] __[, [WithEvents] ИмяПеременной [([Индексы] I ] [As[New] Тип]] . . .

Аргументы:

WithEvents Ключевое слово, указывающее, что аргумент ИмяПеременной является именем объектной переменной, которая используется при отклике на события, генерируемые объектом ActiveX (т. е. объектом, который может быть открыт для других приложений и средств программирования).
ИмяПеременной Имя переменной, удовлетворяющее стандартным правилам именования переменных
Индексы

Размерности переменной массива; допускается описание до 60 размерностей. Для задания аргумента Индексы используется следующий синтаксис:

[Нижний То] Верхний [, [Нижний То] Верхний] ...

Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией option Base- Если отсутствует инструкция option Base, нижняя граница массива равняется нулю

New Ключёвое слово, включающее возможность неявного создания объекта. Если указано ключевое слово New при описании объектной переменной, новый экземпляр объекта создается при первой ссылке на него, поэтому нет необходимости присваивать ссылку на объект с помощью инструкции Set
Тип Тип данных переменной. Для каждой описываемой переменной следует использовать отдельное предложение As тип

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

Инструкция Dim предназначена для описания типа данных переменной на уровне модуля или процедуры. Например, следующая инструкция описывает переменную с типом Integer.

Dim N As Integer

Инструкция Dim предназначена также для описания объектного типа переменных. Далее приводится описание переменной для нового экземпляра рабочего листа.

Dim X Аs New Worksheet

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

Если тип данных или тип объекта не задан, и в модуле отсутствует инструкция DefТип, по умолчанию переменная получает тип Variant. Для обязательного описания всех переменных надо поместить в начале модуля инструкцию Оption Explicit. Использование этой инструкции полезно при отладке программ, т. к. она позволяет легче отслеживать возможную путаницу в именах при наборе программы.

3.2.1 Допустимые имена

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

1. Длина имени не должна превышать 255 символов.

2. Имя не может содержать точек, пробелов и следующих символов: % , & , !, #.©, $.

3. Имя может содержать любую комбинацию букв, цифр и символов, начинающуюся с буквы.

4. Имена должны быть уникальны внутри области, в которой они определены.

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

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

3.3 Константы

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

[Public | Private] Const ИмяКонстанты [As Тип] = Выражение

Аргументы:

Public Ключевое слово, используемое на уровне модуля для описания констант, доступных всем процедурам во всех модулях. Не допускается в процедурах.
Private Ключевое слово, используемое на уровне модуля для описания констант, доступных только внутри модуля, в котором выполняется описание. Не допускается в процедурах.
ИмяКонстанты Имя константы, удовлетворяющее стандартным правилам именования переменных
Тип

Один из поддерживаемых типов данных: Byte, Boolean,

Integer, Long, Currency, Single, Double. Decimal (в настоящее время не поддерживается), Date, String или Variant. Для каждой описываемой константы следует использовать отдельное предложение as тип

Выражение Литерал, другая константа или любое сочетание, которое включает все арифметические или логические операторы, за исключением Is

Пример:

Const ПроцентнаяСтавка As Single = 0.2

Const Фирма = "ООО Бескрайние просторы"


3.4 Комментарии

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

1. Делают программу легко читаемой, поясняя смысл программных кодов и алгоритма.

2. Временно отключают фрагменты программы при ее отладке.

В языке VBA существуют два способа ввода комментариев:

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

Применение зарезервированного слова Rem вместо апострофа.

Ниже приведен пример использования комментариев в тексте программы:

Dim a As Integer

' а – целая переменная

Dim b As String ' b – строковая переменная

4. Операции VBA

В программах на VBA можно использовать стандартный набор операций над данными. Имеются три основных типа операций:

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

Отношения, применяются не только к числам, и их результатом являются логические значения, например х>у.

Логические, используются в логических выражениях и их результатом являются логические значения, например Not x And у.

Приведем операции VBA указанных и дополнительных категорий.

4.1 Математические операции

[Операнд1] + [Операнд2]

Сложение

[Операнд1] - [Операнд2]

Вычитание

- [Операнд]

Перемена знака

[Операнд1] * [Операнд2]

[Операнд1] / [Операнд2]

Умножение

Деление

[Операнд1] \ [Операнд2] Целочисленное деление
[Операнд1] Mod [Операнд2] Остаток от деления по модулю
[Операнд1] ^ [Операнд2] Возведение в степень

4.2 Операции отношения

[Операнд1]< [Операнд2]

Меньше

[Операнд1]> [Операнд2]

Больше

[Операнд1]<= [Операнд2]

Меньше или равно

[Операнд1]>= [Операнд2]

Больше или равно

[Операнд1] <> [Операнд2]

Не равно

[Операнд1] = [Операнд2]

Равно

[Операнд1] Is [Операнд2] Сравнение двух операндов, содержащих ссылки на объекты

[Операнд1] Like [Операнд2]

Сравнение двух строковых выражений


4.3 Логические операции

[Операнд1] And [Операнд2] Логическое умножение

[[Операнд1] Or [Операнд2]

Логическое сложение

[Операнд1] Хоr [Операнд2]

Исключающее or (или)

Not [Операнд2] Логическое отрицание

4.4 Операции со строками

[Строка1] & [Строка2] Сложение строк. Для сложения строк допустимо использование операции [Cтрока1 +[Строка2], но предпочтительнее, во избежание путаницы, применять операцию со знаком &

4.5 Приоритеты операций

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

Приоритет Операция
1 Вызов функции и скобки
2 ^
3 - (смена знака)
4 *, /
5 \
6 Mod
7 +, -
8 >, <, >=, <=, <>,=
9 Not
10 And
11 Or

4.6 Встроенные функции VBA

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

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

Математические функции

Функции проверки типов

Функции преобразования форматов

Функции обработки строк

Функции времени и даты

Ниже рассмотрены основные функции из этих категорий.

Математические функции

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

Функция Возвращаемое значение
Abs (число) Модуль (абсолютная величина)
Atn (число) Арктангенс
Cos (число) Косинус
Exp (число) Экспонента, т. е. результат возведения основания натурального логарифма в указанную степень
Log (число) Натуральный логарифм
Rnd (число)

Случайное число из интервала [0,1).

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

Перед вызовом функции Rnd используйте инструкцию Randomize без аргумента

Sgn (число) Знак числа
Sin (число) Синус
Sqr (число) Квадратный корень из числа
Tan (число) Тангенс
Fix (число) и Int (число)

Обе функции, Int и Fix, отбрасывают дробную часть числа и возвращают целое значение.

Различие между функциями Int и Fix состоит в том, что для отрицательного значения аргумента число функция Int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, a Fix ближайшее отрицательное целое число, большее либо равное указанному


4.7 Функции преобразования форматов

Преобразование строки в число и обратно осуществляют следующими функциями.

Val (строка) Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа
Str (число) Возвращает значение типа variant (string), являющееся строковым представлением числа

В качестве допустимого десятичного разделителя функция str воспринимает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию cstr.

Чтобы представить числовое значение как дату, время, денежное значение или в специальном формате, следует использовать функцию Format. Возвращает значение типа Variant (String), содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата. Синтаксис: Format(Выражение[, Формат[, ПервыйДеньНедели [, ПерваяНеделяГода]]])

Выражение – любое допустимое выражение

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

ПервыйДеньНедели – постоянная, определяющая первый день недели

ПерваяНеделяГода – постоянная, определяющая первую неделю года

При построении пользовательского числового формата возможно использование следующих символов.

0 Резервирует позицию цифрового разряда. Отображает цифру или нуль. Если у числа, представленного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится 0, функция отображает эту цифру аргумента, если нет – в этой позиции отображается нуль
# Резервирует позицию цифрового разряда. Отображает цифру или ничего не отображает. Если у числа, представлен-1 ного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится #, функция отображает эту цифру аргумента, если нет – в исходной позиции не отображается ничего. Действие данного символа аналогично действию 0, за исключением того, что лидирующие нули не отображаются
. Резервирует позицию десятичного разделителя
% Резервирует процентное отображение числа
, Разделитель разряда сотен от тысяч
: Разделитель часов, минут и секунд в категории форматовВремя(Time)
/ Разделитель дня, месяца и года в категории форматов Дата(Date)
E+, E-, e+, e-

Разделитель мантиссы и порядка в экспоненциальном формате

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

Функция

Тип, в который преобразуется выражение

CBool (Выражение)

Boolean

CByte (Выражение)

Byte

CCur (Выражение)

Currency

CDate (Выражение)

Date

СОЫ (Выражение)

Double

CDec (Выражение)

Decimel

CInt (Выражение)

Integer

CLng (Выражение)

Long

CSng (Выражение)

Single

CVar (Выражение)

Variant

CStr (Выражение)

String

4.7.1 Функции обработки строк

В VBA имеются следующие функции обработки строковых выражений.

Функция Возвращаемое выражение
Asc

Возвращает ASCII-код начальной буквы строки. Синтаксис:

Asc(Строка)

Chr

Преобразует ASCII-код в строку. Синтаксис:

Chr(Код)

Например Chr (13) – переход на новую строку, Chr(97) = "а"

Lcase

Преобразует строку к нижнему регистру.

Синтаксис:

Lcase(Строка)

Ucase

Преобразует строку к верхнему регистру.

Синтаксис:

Ucase(Строка)

Left

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

Синтаксис:

Left(string, length)

Аргументы:

length – число символов

string – исходная строка

Right

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

Синтаксис:

Right(string, length)

Аргументы:

length – число символов

string – исходная строка

Mid

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

Синтаксис:

Mid(string, start [, length])

Аргументы:

string – строковое выражение, из которого извлекается подстрока

start – позиция символа в строке string, с которого начинается нужная подстрока

length – число возвращаемых символов подстроки.

Len

Возвращает число символов строки.

Синтаксис:

Len(Строка)

LTrim

Возвращает копию строки без пробелов в начале Синтаксис:

LTrim(Строка)

Rtrim

Возвращает копию строки без пробелов в конце.

Синтаксис:

RTrimfСтрока)

Trim

Возвращает копию строки без пробелов в начале и в конце

Синтаксис:

Trim(Строка)

Space

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

Синтаксис:

Space(Число)

String

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

Синтаксис:

String(number,character)

Аргументы:

number – число повторений символа

character – повторяемый символ

StrComp

Возвращает результат сравнения двух строк.

Синтаксис:

StrComp(stringl, string2 [, compare])

Аргументы:

stringl и string2 – два любых строковых выражения

compare – указывает способ сравнения строк. Допустимые значения: 0 (двоичное сравнение), 1 (посимвольное сравнение без учета регистра)

Возвращаемые значения:

string1 меньше, чем string2, то -1

string1 равняется string2, то 0

string1 больше, чем string2, то 1

InStr

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

Синтаксис:

InStr([start, ]stringl, string2[, compare])

Аргументы:

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


Возвращаемое выражение

stringl – строковое выражение, в котором выполняется поиск

string2 – искомое строковое выражение

compare – указывает способ сравнения строк. Допустимые значения: 0 (для двоичного сравнения), 1 (посимвольное сравнение без учета регистра).

4.8 Инструкции VBA

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

Инструкции описания

Инструкции присваивания

Исполняемые инструкции


4.8.1 Оператор присваивания

Оператор присваивания позволяет присвоить значение выражения переменной, константе или свойству объекта. Оператор присвоения всегда включает знак равенства (=). Синтаксис: <Переменная> (или Постоянная или Свойство Объекта) = <Выражение>

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

х = 2

х = х + 2

переменной х будет присвоено 4.

Для присваивания переменной ссылки на объект применяется инструкция Set. В следующем примере инструкция Set присваивает переменной область Диапазон А1:B3:

Set Область = Range("А1:ВЗ")

В общем случае инструкция set имеет следующий синтаксис:

Set ОбъектнаяПеременная = {[New] ОбъектноеВыражение | Nothing}

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

4.8.2 Расположение нескольких операторов на одной строке

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

1. х = х +1 и 2. х = х +1: у = х +2

у = х +2

5. Ввод и вывод информации

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

InputBox

Выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа string, содержащее текст, введенный в поле. Синтаксис:

InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Здесь аргументы означают:

prompt – строковое выражение, отображаемое как сообщение в диалоговом окне;

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

default – строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым;

xpos – числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана. Если этот аргумент опущен, диалоговое окно выравнивается по центру экрана по горизонтали;

ypos – числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана. Если этот аргумент опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана;

helpfile – строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо наличие также аргумента context;

context – числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо наличие также аргумента helpfile.

MsgBox

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

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Аргументы:

prompt – строковое выражение, отображаемое как сообщение в диалоговом окне;

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

Рассмотрим пример использования окон сообщений. В результате действия приведенной ниже процедуры CommandButton1_Click() появится диалоговое окно Пример окна ввода с полем ввода (рис. 5.1). Следуя приглашению в этом диалоговом окне, введем в поле ввода имя, например, Николай Маркович. Нажмем кнопку ОК. На экране отобразится диалоговое окно пример окна сообщения с текстом приветствия (рис. 5.2). Если пользователь не введет имя в поле ввода диалогового окна Пример окна ввода или нажмет кнопку Отмена, то компьютер выразит свое неудовлетворение действиями пользователя отображением диалогового окна Еще один пример окна сообщения (рис. 5.3).

Рисунок 5.1

Рисунок 5.2

Рисунок 5.3

Private Sub CommandButton1_Click()

' Описание переменной

Dim Name As String

' Ввод имени пользователя

Name = InputBox("Введите свое имя", "Пример окна ввода")

' Реакция программы на ввод имени пользователя

If Name <> "" Then

Response = MsgBox("Здравствуйте, " + Name, vbInformation, " ")

Else

Response = MsgBox("Вы забыли ввести свое имя! ", vbExclamation, "Еще один пример окна сообщения")

End If

End Sub