Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы к ОП.doc
Скачиваний:
6
Добавлен:
21.08.2019
Размер:
950.27 Кб
Скачать

1 Особенности офисного программирования, понятие и возможности Visual Basic for Application.

При появлении Word для Windows и других приложений, объединенных в пакет MS Office, возникла проблема их интеграции, поскольку все они предназначались для работы с документами и автоматизации бухгалтерских расчетов. Все эти приложения позволяют заменить повторяющиеся действия последовательностью машинных команд — макроопределений или макросов. Visual Basic стал основным языком для разработки макроопределений. Появились его версии: Word Basic, Access Basic и т.д.

В VBA применяется объектно-ориентированный подход к разработке приложений. Каждое приложение — Word, Excel, Access, PowerPoint и др. — дополняет средства VBA новыми функциональными возможностями с помощью объектов, свойств и методов, присущих этому приложению.

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

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

  • создать собственное диалоговое окно и придать ему требуемый внешний вид;

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

  • изменить меню приложения Microsoft Office;

  • управлять другим приложением Microsoft Office или принадлежащими ему данными;

  • объединить данные из нескольких приложений Microsoft Office в одном документе;

  • автоматически создавать или изменять страницы Web, совместно используя приложения Microsoft Office и VBA.

2 Макросы и язык программирования Visual Basic for Application.

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

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

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

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

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

3 Основные понятия объектно-ориентированного программирования.

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

Классы.

Класс - это абстрактное понятие, сравнимое с понятием категория в его обычном смысле.

Класс в ООП - это абстрактный тип данных, который включает в себя не только данные, но и функции и процедуры.

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

Наследование.

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

Инкапсуляция.

Инкапсуляция (encapsulation) - объединение данных с функциями, предназначенными для манипулирования этими данными (т.е. поведением) в новом типе - КЛАССЕ .

Полиморфизм.

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

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

4 Элементы проекта Visual Basic for Application. Интегрированная среда разработки.

Редактор VBA активизируется командой Сервис/Макросы/Редактор Visual Basic. Интерфейс VBA состоит из следующих основных компонентов: окна проекта, окна свойств, окна редактирования кода, окна форм, меню и панели инструментов.

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

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

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

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

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

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

5 Отладка программ и поиск ошибок в проекте Visual Basic for Application.

Ошибки синтаксиса

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

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

После того как VBA успешно завершит анализ и компиляцию строки кода в процедуре и не будет обнаружено никаких ошибок, выполнится цветовое кодирование различных частей строки (Помните, ключевые слова в Редакторе VB отображаются синим цветом, комментарии – зеленым, а данные или другие операторы отображаются в виде черного текста). Если, однако, VBA обнаруживает ошибку синтаксиса в строке в процессе анализа или компиляции, VBA отображает всю строку красным цветом и выводит на экран диалоговое окно с сообщением об ошибке.

Ошибки времени исполнения

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

6 Типы данных в Visual Basic for Application.

Название типа

Размер в байтах

Описание и диапазон значения

Byte

1

Целые положительные числа от 0 до 255

Integer

2

Целые числа от -32768 до 32767

Long

4

Длинные целые числа от -2147483648 до 2147483647

Single

4

Вещественные числа обычной точности с

плавающей точкой.

Отрицательные числа:

от -3.402823Е38 до -1.401298Е-45.

Положительные числа:

от 1.401298Е-45 до 3.402823Е38

Double

8

Вещественные числа двойной точности с

плавающей точкой.

Отрицательные числа:

от -1.79769313486232Е308 до

-4.94065645841247Е-324.

Положительные числа:

от 4.94065645841247Е-324 до

1.79769313486232Е308

Currency

8

Числа, имеющие до 15 цифр до десятичной точки и 4 цифры после нее (денежные единицы). От -922337203685477.5808 до 922337203685477.5807

Boolean

2

Для хранения логических значений; может содержать только значения True (Истина) или False (Ложно)

Date

8

Для хранения комбинации информации о дате и времени. Диапазон дат может быть от 1 января 100 года до 31 декабря 9999 года. Диапазон времени от 00:00:00 до 23:59:59

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

10 байт + длина строки

Используется для хранения текста. Может содержать от 0 символов до (приблизительно) 2 миллиардов символов

String (строка

фиксированной длины)

Длина

строки (один байт на один символ)

Используется для хранения текста. Может содержать от одного до (приблизительно) 65400 символов

Variant

16 байт + 1 байт/символ

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

Object

4

Используется для доступа к любому объекту, распознаваемому VBA. Сохраняет адрес объекта в памяти

7 Переменные, константы в Visual Basic for Application.

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

Идентификатор – это имя переменной. При выборе имени переменной необходимо соблюдать следующие правила:

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

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

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

• имя переменной не должно превышать 255 символов;

• имя переменной не должно дублировать определенные ключевые слова vba.

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

Сохранение значения данных в переменной называется присваиванием переменной.

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

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

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

Для объявления переменных используются операторы Dim, Public, Private и Static. Первый можно использовать на обоих уровнях, Public, Private – на уровне модуля, Static – только на уровне процедуры.

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

Dim <имя переменной1, имя переменной2,…> As <имя типа>

или

Dim <имя переменной1> As <имя типа1>, <имя переменной2> As <имя типа2>,<имя переменной3> As <имя типа3>, …

Константа – это значение в программе VBA, которое не меняется. Существует несколько типов констант.

Именованные константы – константы, имеющие заданное имя; это имя имеет конкретное неизменяемое значение.

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

8 Арифметические операции и операции сравнения в Visual Basic for Application.

Знак

Синтаксис

Имя/Описание

+

N1 + N2

Сложение. Прибавляет N1 к N2

N1 - N2

Вычитание. Вычитает N2 из N1

*

N1 * N2

Умножение. Умножает N1 на N2

/

N1 / N2

Деление. Делит N1 на N2.

\

Nl \ N2

Целочисленное деление. Делит N1 на N2, отбрасывая любую дробную часть так, чтобы результат был целым числом.

Mod

N1 Mod N2

Деление по модулю. Делит N1 на N2, возвращая только остаток операции деления.

N1 ^ N2 Возведение в степень. Возводит N1 в степень N2.

Операции сравнения

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

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

Операция/ Оператор

Синтаксис

Наименование/описание

^

Е1 = Е2

Равенство. True, если El равно Е2, иначе – False

<

El < Е2

Меньше, чем. True, если El меньше, чем Е2, иначе – False

<

<=

Меньше, чем или равно. True, если Е1 меньше или равно Е2, иначе – False

> > Больше, чем. True, если Е1 больше, чем Е2, иначе – False

>

>=

Больше, чем или равно. True, если Е1 больше или равно Е2, иначе – False

¹ <> Не равно. True, если Е1 не равно Е2, иначе – False

9 Логические операции. Приоритет выполнения операций.

Логические операторы

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

And

El And E2

Конъюнкция. True, если оба Е1 и Е2 имеют значение True, иначе – False

Or

El Or E2

Дизъюнкция. True, если одно выражение или оба (Е1 и Е2) являются равными True; иначе – False

Not

Not El

Отрицание. True, если Е1 имеет значение False; False, если El является равным True

Xor

El Xor E2

Исключение. True, если Е1 и Е2 имеют разные значения; иначе – False

Eqv

El Eqv E2

Эквивалентность. True, если Е1 имеет то же самое значение, что и Е2; иначе – False

Imp

El Imp E2

Импликация. False, когда Е1 является равным True и Е2 равно False; иначе — True.

Иерархия операторов/операций от наивысшего до самого

низкого приоритета

Оператор/знак

Комментарии

л

Возведение в степень, наивысший приоритет

Унарный минус

*, /

Умножение и деление имеют равные приоритеты; они вычисляются по мере появления в выражении слева направо

\

Mod

+, -

Сложение и вычитание имеют равный приоритет; они вычисляются по мере появления в выражении слева направо

&

Всякая конкатенация строк выполняется после любых арифметических операций в выражении и перед любыми операциями сравнения или логическими операциями

Like, =, о, Is

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

Not

And

Or

Xor

Eqv

Imp

10 Пользовательские процедуры и функции в Visual Basic for Application.

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

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

Тип Sub Имя_Процедуры(Аргументы)

Операторы тела процедуры

End Sub

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

Оператор End Sub отмечает конец процедуры.

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

Общий вид функции пользователя:

Public function ИМЯ_ФУНКЦИИ(список параметров)

ТЕЛО_ФУНКЦИИ

End Function

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

11 Математические функции в Visual Basic for Application.

Функции(ар-гументы)

Возвращает/действие

Abs(N)

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

Cos(N)

Косинус угла N, где N – это угол, измеренный в радианах

Sin(N)

Возвращает синус угла; N – это угол, измеренный в радианах

Tan(N)

Возвращает тангенс угла; N – угол в радианах

Atn(N)

Возвращает арктангенс N как угол в радианах

Exp(N)

Возвращает константу е, возведенную в степень N (е – это основание натуральных логарифмов и она (приблизительно) равна 2,718282)

Fix(N)

Возвращает целую часть N. Fix не округляет число, а отбрасывает любую дробную часть. Если N является отрицательным, Fix возвращает ближайшее отрицательное целое большее, чем или равное N

Int(N)

Возвращает целую часть N. Int не округляет число, а отбрасывает любую дробную часть. Если N является отрицательным, Int возвращает ближайшее отрицательное целое меньшее, чем или равное N

Log(N) Возвращает натуральный логарифм N

Rnd(N)

Возвращает случайное число; аргумент является необязательным. Используйте функцию Rnd только после инициализации VBA-генератора случайных чисел оператором Randomize

Sgn(N)

Возвращает знак числа: –1, если N – отрицательное; 1, если N – положительное; 0, если N равно 0

Sqr(N)

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

12 Функции преобразования данных в Visual Basic for Application.

Функции преобразования данных

Visual Basic предоставляет несколько функций для преобразования одного типа данных в другой

Функция(ар-гументы)

Возвращает/действие

Asc(S)

Возвращает число кода символа, соответствующее первой букве строки S. Буква "А", например, имеет код символа 65

Функ

Chr(N)

Возвращает строку из одного символа, соответствующего коду символа N, который должен быть числом между 0 и 255, включительно. Код символа 65, например, возвращает букву "А" (Chr(13) – символ возврата каретки, Chr(10) – символ смещения на одну строку)

содержащую

шестнадцатиричное

Hex(N)

Возвращает строку, представление N

|Oct(N)

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

CBool(N) Возвращает Boolean-эквивалент численного выражения N

CByte(E)

Возвращает численное значение типа Byte (от 0 до 255); Е – любое допустимое численное или строковое выражение, которое может быть преобразовано в число

CCur(E)

Возвращает численное значение типа Currency; E – любое допустимое численное или строковое выражение, которое может быть преобразовано в число

CDate(E)

Возвращает значение типа Date. E может быть любым допустимым выражением (строкой или числом), представляющим дату в диапазоне 1/1/100 12/31/9999, включительно

CDbl(E)

Возвращает численное значение типа Double; E – любое допустимое численное или строковое выражение, которое может быть преобразовано в число

Cint(E)

Возвращает численное значение типа Integer; E – любое допустимое численное или строковое выражение, которое может быть преобразовано в число

CLng(E)

Возвращает численное значение типа Long; E – любое допустимое численное или строковое выражение, которое может быть преобразовано в число

CSng(E)

Возвращает численное значение типа Single; E – любое допустимое численное или строковое выражение, которое может быть преобразовано в число

CStr(E)

Возвращает значение типа String; E – любое допустимое численное или строковое выражение

CVar(E)

Возвращает значение типа Variant; E – любое допустимое численное или строковое выражение

13 Функции даты и времени в Visual Basic for Application.

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

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

Функции(ар-гументы)

Возвращает/действие

Date

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

Time

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

Now Возвращает системную дату и время

Year(D)

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

Month(D)

Возвращает целое, являющееся частью выражения типа Date, содержащее месяц. Месяц возвращается как число между 1 и 12, включительно

Day(D)

Возвращает целое, являющееся частью выражения типа Date и содержащее день. День возвращается как число между 1 и 31, включительно

Weekday(D)

Возвращает целое, содержащее день недели для выражения типа Date. День недели возвращается как число между 1 и 7, включительно; 1 – это воскресенье, 2 – понедельник и так далее

Hour(D)

Возвращает целое, содержащее часы как часть времени, содержащегося в выражении типа Date. Часы возвращаются как число между 0 и 23, включительно. Если выражение D не содержит значения времени, то Hour возвращает 0

Minute(D)

Возвращает целое, содержащее минуты как часть времени в выражении типа Date. Минуты возвращаются как число между 0 и 59, включительно. Если выражение D не содержит значения времени, Minute возвращает 0

Second(D)

Возвращает целое, содержащее секунды как часть времени в выражении типа Date. Секунды возвращаются как число между 0 и 59, включительно. Если выражение D не содержит значения времени, Second возвращает 0

14 Строковые функции в Visual Basic for Application.

Строковые функции

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

Функция(ар-гумент)

Возвращает/действие

InStr([Nl,] SI, S2[, N2])

Возвращает положение S2 в S1. N1 – начальное положение для поиска; N2 определяет тип сравнения. N1 и N2 необязательны. Если N2 опускается, то для поиска используется текущая установка Option Compare

InStrRev(Sl, S2 [, Nl[, N2]])

Возвращает позицию появления строки S2 внутри S1, в направлении от конца (или N1) к началу строки. N2 определяет тип сравнения. Если N2 опускается, то для поиска используется текущая установка Option Compare

LCase(S)

Возвращает строку (тип String), содержащую копию S со всеми символами верхнего регистра, преобразованными в символы нижнего регистра

Left(S, N)

Возвращает строку; копирует N символов из S, начиная с левого крайнего символа S

Len(S)

Возвращает число символов в S, включая начальные и конечные пробелы

LTrim(S)

Возвращает копию строки S после удаления символов пробела из левой части строки (начальные пробелы)

Mid(S, Nl, N2)

Возвращает строку; копирует N2 символов из S, начиная с позиции символа в S, заданной аргументом N1. N2 является необязательным; если N2 опущен, то Mid возвращает все символы в строке S от позиции N1 до конца строки

Right(S, N)

Возвращает значение типа String; копирует N символов из S, начиная с правого крайнего символа S

RTrim(S)

Возвращает копию строки S после удаления символов пробела из правой части строки (конечные символы)

15 Условный оператор в Visual Basic for Application.

Простейшими VBA-операторами изменения порядка выполнения кода являются операторы If…Then и If…Then…Else. Оператор If…Then позволяет VBA выбрать единственную альтернативную ветвь выполнения процедуры. Связанный с ним оператор If...Then...Else дает возможность VBA выбирать из двух альтернативных ветвей кода процедуры на основе оценки того, является ли указанное условие равным True.

Оператор If…Then имеет две различные формы синтаксиса. Простая форма – это однострочный оператор If…Then:

If Condition Then Statements

Condition – любое логическое выражение, a Statements – один, несколько или ни одного оператора VBA; все операторы должны помещаться в одной и той же строке. При выполнении подобного оператора VBA сначала оценивает логическое выражение, представленное с помощью Condition; если это логическое выражение равно True, то выполняется оператор (или операторы) после ключевого слова Then до конца строки. Затем VBA возобновляет выполнение кода с первого оператора после строки, содержащей оператор If…Then. Если логическое выражение, представленное с помощью Condition, равно False, то выполняется первый оператор в строке после строки, содержащей оператор If…Then, без выполнения альтернативной ветви.

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

Statements1 : Statements2 : … : StatementsN

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

Вторая форма синтаксиса оператора If…Then называется блоком (block) оператора If. В блоке оператора If…Then условие и операторы записываются в отдельных строках, как показано в следующей синтаксической форме:

If Condition Then

Statements End If

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

Оператор If…Then дает возможность задавать одну альтернативную ветвь операторов в процедуре. Однако часто бывает необходимо выбрать одну из двух различных ветвей операторов в зависимости от определенного условия. Для этого VBA предоставляет операторы If…Then…Else и If…Then…ElseIf.

VBA-оператор If…Then…Else имеет две формы: однострочную и блочную.

16 Циклы в Visual Basic for Application.

Оператор цикла For … Next

For счетчик = начало To конец [Step шаг]

(операторы)

Next счетчик

Оператор цикла Do … Loop

Do While (условие)

(операторы)

Loop

Do Until (условие)

(операторы)

Loop

Do

(операторы)

Loop While условие

Do

(операторы)

Loop Until условие

17 Массивы в Visual Basic for Application.

Массив – это набор элементов одинакового типа, имеющих общее имя.

Нумерация элементов массива начинается с нуля.

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

Массивы есть статистические и динамические.

Объявление массивов:

Dim m1(50) as integer

Dim m2(10,20) as integer

Dim m3(10 to 25, 30 to 40) as integer

Элементам массива можно присваивать данные например:

M1(24)=5

Динамические

Dim m1()

При использовании динамического массива необходимо использовать оператор ReDim

Например

ReDim M1(5)

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

Dim m() as single

……….

ReDim m(1 to 10, 1 to 20)

………

ReDim Preserve m(1 to 10, 1 to 50)

18 Записи в Visual Basic for Application.

Язык VBA позволяет создавать собственные, определенные пользователем типы данных, состоящие из одного или нескольких элементов. Определив пользовательский тип данных, вы получаете возможность использовать, переменны соответствующего типа, которые по своей структуре напоминают записи в базе данных. В языке VBA для работы с записями подобной базы данных удобнее всего объявить массив данных пользовательского типа. Для объявления пользовательского типа данных используется оператор Type … End Type

Type Сотрудник

ТабНомер as Integer

Фамилия as String

Имя as String

Отчество as String

Адрес as String

End Type

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

Dim Экономист As Сотрудник

Экономист (1 to 10) as Сотрудник

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

Экономист.Фамилия=”Иванов”

Экономист.Имя=”Иван”

Экономист.Отчество=”Иванович”

Для сокращения записи подобных операторов удобно использовать оператор With … End With.

With Экономист

.Фамилия=”Иванов”

.Имя=”Иван”

.Отчество=”Иванович”

End With

19 Работа с файлами в Visual Basic for Application.

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

  • Открытие файла;

  • Чтение из файла или запись в файл;

  • Закрытие файла.

В VBA можно работать с тремя различными типами файлов:

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

  • Файлы произвольного доступа состоят из записей фиксированной длины.

  • Бинарные файлы представляют собой сплошной поток байтов.

Для того чтобы открыть файл используется оператор Open:

Open Путь For Режим as [#] Номер_файла

Путь ­ определяет полный путь к файлу который необходимо открыть.

Режим ­ задает режим доступа к файлу.

Append – при последовательном доступе. Если файл существует то данные дописываются в конец. Если файл не существует, то он создается заново.

Input – при последовательном доступе. Используется для чтения файла.

Output – при последовательном доступе. Используется для записи данных в файл. Если файл существует, то он удаляется, если нет файла то он создается снова.

Random – при произвольном доступе. Используется для чтения и записи данных в файл.

Binary – при бинарном доступе. Для чтения и записи данных в файл.

Номер_файла – может принимать любое значение от 1 до 511, которое еще не было присвоено другому файлу.

Для записи данных в файл используется оператор Write #

Write #Номер_файла, [Список_Вывода]

Для считывания данных из файла последовательного доступа используется оператор Input #

Input # Номер_Файла, Список_Переменных

Для записи текста в файл можно использовать оператор Print #

Print #Номер_файла, [Список_Вывода]

Оператор Line Input # предназначен для чтения из последовательного файла по одной строке текста.

Line Input #Номер_файла, переменная

20 Элементы диалоговых окон в Visual Basic for Application.

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

Для создания в проекте VBA новой формы пользователя необходимо активизировать это проект в окне проектов и либо выбрать команду меню Insert – UserForm редактора VBA. При этом новая форма появится в специально созданном для нее окне. Рядом с формой будет отображена панель элементов управления Toolbox – специальная панель инструментов, содержащая кнопки, с помощью которых соответствующие элементы управления можно разместить в созданной форме. На поверхности окна отображается сетка. Эта сетка помогает выравнивать и контролировать размер элементов управления, помещенных на форму. Сетка из точек отображается в форме только в режиме разработки.

Элементы формы пользователя:

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

  • Окно Toolbox, расположенное справа от окна формы пользователя, содержит единственную вкладку Controls, где находятся кнопки, представляющие все типы элементов управления, которые могут быть помещены на форму.

  • После щелчка мыши по форме пользователя в окне свойств отображаются свойства формы как текущего выбранного объекта. Если выбрать в форме один из ее элементов управления, то в окне Properties будут представлены свойства данного элемента управления. В окне свойст имеются две вкладки, на каждой из которой отображается один и тот же набор свойств: на вкладке Alphabetic (По алфавиту) эти свойства упорядочены по алфавиту, а на вкладке Categorized те же свойства сгруппированные по категориям. На каждой из этих вкладок слева указываются имена свойств, а справа от каждого имени – его текущее значения. При выборе некоторого свойства его значение автоматически отображается в поле, позволяющем это значение изменить, но только в пределах набора допустимых значений данного свойства.

  • На панели инструментов окна Project слева находятся две кнопки View Code и View Object. Кнопка View Code позволяет отобразить для текущей формы окно программного кода, содержащее текст всех ее подпрграмм, т.е. методов и событий. Щелчок на кнопке View Object позволяет перейти в окно визуального представления формы.

Отображение формы на экране выполняется в два этапа:

  • Загрузка формы в оперативную память компьютера;

  • Отображение загруженной формы на экране.

Для открытия формы используется метод Show, а для закрытия Hide.

21 Элементы управления в Visual Basic for Application.

Объект UserForm может содержать те же элементы управления, что и находящиеся в диалоговых окне Excel или других приложений Windows. Элементы управления (controls) – это элементы диалогового окна, которые дают возможность пользователю взаимодействовать с программой. Они включают в себя кнопки-переключатели, текстовые поля, линейки прокрутки, командные кнопки и так далее.

  1. Выбор объекта (Select Object) – переключает форму в режим выбора элементов управления, уже присутствующих в ней.

  2. Надпись (Label) – добавляет в форму надпись.

  3. Поел (TextBox) – Добавляет в форму поле ввода.

  4. Поле со списком (ComboBox) – добавляет в форму поле ввода с раскрывающимся списком.

  5. Список (ListBox) – добавляет в форму поле обычного списка

  6. Флажок (CheckBox) – добавляет в форму флажок опции

  7. Переключатель (OptionButton) – добавляет в форму отдельную кнопку переключения

  8. Выключатель (ToggleButton) – добавляет в форму кнопку выключения.

  9. Рамка (Frame) – добавляет в форму рамку

  10. Кнопка (CommandButton) – добавляет в форму командную кнопку

  11. Набор вкладок (TabStrip) – добавляет в форму набор вкладок

  12. Набор страниц (MultiPage) – добавляет в форму набор страниц

  13. Полоса прокрутки (ScrollBar) – добавляет в форму полосу прокрутки

  14. Счетчик (SpinButton) – добавляет в форму счетчик

  15. Рисунок (Image) – добавляет в форму элемент управления, предназначенный для размещения изображения.

22 Понятие об иерархической модели. Иерархическая модель Visual Basic for Application.

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

Возможен следующий пример организации данных типа “дерево”:

Основное отличие программ на языке Visual Basic for Applications (VBA) от обычных программ на Basic или Pascal, состоит в том, что наряду с обычными переменными и константами, эти программы манипулируют готовыми объектами приложений Microsoft Office, такими, например, как документы, абзацы, строки и слова Word; или рабочие книги, рабочие листы и диапазоны ячеек Excel. Чтобы писать программы на VBA, нужно хорошо представлять себе функциональные возможности таких объектов, свойства, которыми они обладают, способы воздействия на них. Объектная модель Microsoft Office содержит множество различных объектов, образующих достаточно сложную иерархию. В каждом приложении используются как общие для всех объекты (объект Application - приложение, например), так и специфичные для данного приложения, которые в свою очередь образуют иерархию объектов данного приложения. Что понимается в VBA под объектом? Объектами (Objects) в VBA называются изменяемые элементы приложения или документа (например, слова, абзацы, сноски или колонтитулы документа Word, ячейки, рабочие листы, диаграммы рабочей книги Excel, а также и сами приложения Office). То есть объектом VBA считается некоторый элемент, который можно отобразить в окне приложения и, главное, на который можно воздействовать некоторым образом, изменяя его состояние. Например, диапазон ячеек рабочего листа можно увидеть в окне, и можно изменить его состояние, введя в ячейки этого диапазона данные, сменив цвет ячеек, используемый шрифт или иные характеристики. Таким образом, диапазон ячеек — это объект. Может возникнуть вопрос — что же из видимых в окне элементов не является объектом? Ведь приложения Office в такой большой степени поддаются настройке пользователем, что практически все, что вы можете увидеть в окне приложения, можно тем или иным образом изменить. Тем не менее существуют элементы окна приложения, не являющиеся объектами. Например, кнопки Свернуть окно и Развернуть окно не являются объектами. Можно пользоваться этими кнопками, но нельзя изменить их. Напротив, само окно рабочей книги является объектом, поскольку оно может быть свернуто или развернуто с помощью этих кнопок.

Существуют сотни самых разнообразных объектов VBA, многие из которых объединяются в семейства объектов. В каждом из приложений Office объекты существуют не просто сами по себе, а образуют многоуровневую структуру — некоторые объекты содержатся в других объектах. Удобно представлять эту иерархию объектов в виде своеобразного "древа вложенностей", так как иерархия объектов Microsoft. Только в одном Excel их более сотни.

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

23 Иерархические объекты Visual Basic for Application в Microsoft Office Excel.

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

Объект

Описание

Application ( объект "Приложение")

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

Windows

( семейство "Окна")

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

Workbooks ( семейство

"Рабочие книги")

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

Worksheets

(семейство

"Рабочие листы")

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

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

Range

(объект "Диапазон")

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

Excel

объект. Принадлежащий к этому же классу объектов объект

ActiveCell - представляет собой активную в настоящий момент ячейку. Обратите внимание на то, что не существует такого объекта, как

Cell — отдельно взятая ячейка представляет собой частный случай объекта Range.

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

Application.Workbooks(1).Worksheets(1).Range("A1").Value = 1

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

24 Свойства иерархических объектов Visual Basic for Application в Microsoft Office Excel.

В VBA, как и в реальной жизни, всякий объект обладает определенными свойствами (Properties), описывающими этот объект или его состояние. Свойства и методы предназначены для доступа к содержимому и функциональности объектов. Например, свойство Value объекта Range используется для просмотра значения в ячейке B3 на рабочем листе Sales из рабочей книги Current.xls :

Workbooks("current.xls").Worksheet("sales").Range("B3").Value=3

Свойство Bold объекта Font позволяет изменить начертания шрифта в ячейке B3 рабочего листа Sales на полужирное:

Workbooks("current.xls").Worksheet("sales").Range("B3").Font.Bold =true

Приведем еще один пример — в приложении Excel объект Range (диапазон ячеек рабочего листа) имеет такие свойства, как:

  • Font — используемый шрифт;

  • Formula — определяет содержимое ячейки или диапазона ячеек;

  • Value — определяет значение ячейки;

и многие, многие другие свойства.

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