Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Процедуры, модули, инструкции





Программы на языке VBA создаются в виде процедур в окне редактора VBE (Visual Basic Editor).

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

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

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

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

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

Синтаксис записи процедур-подпрограмм имеет вид:

Sub имя([аргументы])

Инструкции языка VBA

End Sub

Пример процедуры-подпрограммы Hello:

Sub Hello()

MsgBox ("Привет!")

End Sub

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

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



Function имя([аргументы])

Инструкции языка VBA

имя=выражение

End Function

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

Function Square(num_One As Double) As Double Square = num_One ^ 2End Function

Ключевое слово Function означает, что мы объявляем функцию. Следом за ним, в скобках, идет объявление параметров, которые мы можем передать функции. В нашем случае это - одна переменная num_One типа Double. После объявления имени и параметров функции следует объявление типа самой функции, или, точнее - типа возвращаемого функцией значения. В нашем случае с помощью конструкции As Double мы задали тип функции Double. При объявлении функции можно не указывать тип - тогда он автоматически будет установлен в Variant.Последняя строка объявления функции - End Function, означает конец функции.

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

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

Пример комментария:

Selection. Font.Size=13 'Задать для выделенного фрагмента текста размер шрифта 13

Инструкция– это синтаксически завершенная конструкция, представляющая отдельное действие, описание или определение.

Пример инструкции:

MsgBox ("Привет!")

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

ключевые слова (зарезервированные) – слова или символы, распознаваемые как элемент VBA;

Пример ключевых слов:

Sub, End, Type, Dim, As, String,Is,…

операторы – знаки операции в выражениях;

математические: + - * / ^

\ 'целочисленное деление 10\3=3

mod(остаток от деления 8 mod 2 =0, 7 mod 4 =3

сравнения: < > <= >= <> =

Is 'сравн. 2-х операндов (тип Odject) E1 is E2

Like 'сравн. 2-х строк.выраж (тип String) E1 like E2

логические: And Or Not Imp Eqv (эквивалентность)

Xor 'Исключающее Or (Исключающее «ИЛИ»)

конкатенация: & 'конкатенация (сцепление строк). Для сцепления строк допустимо использование операции вида [Строка1] + [Строка2]

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

Пример имен переменных:

str_Name, num_Age, str_Name1, num_Item2…

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

Таблица 5. Типы данных VBA(для ознакомления)

Тип данных Описание и диапазон значений
Array Массив переменных любого встроенного типа данных
Boolean True (истина) или False (ложь)
Byte Положительное число от 0 до 255
Currency Используется для денежных вычислений с фиксированным количеством десятичных знаков.
Date Дата и время. Диапазон дат: от 01.01.0100 г. до 31.12.9999 г.
Decimal Десятичное представление данных в целочисленной или вещественной форме
Double Число с плавающей точкой двойной точности.
Integer Целое число от -32 768 до 32 767
Long Длинное целое число от -2 147 483 648 до 2 147 483 647
Object Ссылка на объект
Single Число с плавающей точкой обычной точности.
String(переменной длины) Длина строки от 0 до, приблизительно, 2 миллиардов символов
String(фиксированной длины) от 0 до ~65 000 символов
Variant Может использоваться для хранения любого типа данных, кроме строк фиксированной длины. Диапазон зависит от фактически сохраняемых данных.
Определяемый пользователем тип данных Используется для описания различных структур данных

константы – элемент, сохраняющий постоянное неизменное значение в процессе выполнения программы;

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

VBA поддерживает неименованные и именованные константы.

Неименованные константы — это фактические значения данных определенного типа. Их можно использовать без какого-либо объявления, непосредственно в выражениях.

Именованные константы — это мнемонические обозначения неименованных констант.

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

Пример констант:

Const str_Name As String = "Александр" Const int_Size As Double = 18000 Dim num_NewSize As Double MsgBox ("Здравствуйте") num_NewSize = int_Size * 2

 

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

Application. RunMacroName:="Project.ThisDocument.Lingvo14_Timer"

Selection.Font.Size = 17

Инструкции могут быть следующих типов:

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

Если переменная не была описана, она по умолчанию получает тип Variant(в этом случае нерационально используется память).

Синтаксис инструкции описания Dim: Dim <имя переменной> [As <имятипа>]

Примеры описаний переменной:

Dim HelloMsg'переменная HelloMsg как Variant, т.к. не описан тип

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

Dim А(1 То 10) As String'одномерный массив А из десяти строковых элементов

· инструкции присвоения– присваивают значение или выражение переменной или константе (всегда содержат знак =);

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

Невозможно присвоить строковое выражение числовой переменной или числовое выражение строковой переменной.

Переменным типа Variant могут присваиваться как строковые, так и числовые выражения.

Пример

Dim S As String'объявление строковой переменной S

S=“Здравствуйте!”'присвоение строковой переменной S значения

n=10'присвоение числовой переменной n значения 10

Синтаксис объявления именованных констант:

Const <имяКонстанты> [As <типДанных>] = <значение>

где: имяКонстанты – имя константы; значение – значение константы.

Const intPersonCount As Integer = 100

Const maxLen = 50

Const Greeting = “Hello, Max!”

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

Пример

If S<0 Then 'проверка условия S<0

S=S+1 'увеличение значения переменной S на 1, если условие истинно

Else

S=S-1 'уменьшение значения переменной S на 1, если условие ложно

End If 'завершение проверки условия

VBA и объекты

Объекты, семейства, классы

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

Объекткак программная конструкция, объединяет данные и функции для работы с этими данными.

Всякий объект принадлежит некоторому классу, то есть является экземпляром класса.

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

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

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

Компоненты объектной модели каждого приложения Microsoft Office – объекты и семейства – размещаются в одноименных библиотеках (файлы с расширением .old).

Существуют стандартная библиотека объектов VBA и стандартная библиотека Office, библиотеки объектов Word, Excel, Access и прочие объектные библиотеки, предоставляющие различные функциональные возможности.

Чтобы просмотреть список объектных библиотек, доступных в конкретном приложении Microsoft Office (например, в Word), необходимо в редакторе VBA выбрать команду меню "View/Object Brouser" и раскрыть список "Project/Library"(F2). На рисунке показан раскрытый список объектных библиотек, доступных в Microsoft Word.

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

Application, в свою очередь, включает в себя другие объекты, методы, свойства. Например, такая команда приводит к закрытию Microsoft Word:

Word.Application.Quit

Обычно при работе в MS Word опускают вызов объекта Word, то есть вышеприведенную команду вполне может заменить такая:

Application.Quit

Вызов объекта Application тоже можно опускать, но делать это допустимо не всегда. Например, команду Application.Quit сократить уже не получится

Normal – проект, доступный для всех документов Word. Здесь могут храниться функции и классы, используемые всеми документами Word.

Office – библиотека объектов, общих для всех приложений Microsoft Office. Здесь находятся CommandBar – классы, определяющие инструментальные панели, и классы других общих объектов.

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

Stdole – библиотека классов, позволяющая работать с ActiveX-объектами (OLE-объектами) и функциями OLE-автоматизации (OLE-Automation).

VBA – библиотека классов, связанных с языком VBA. Здесь хранятся все стандартные функции и константы, встроенные в язык, классы Collection, Err и прочие.

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

Основными семействами Word являются:

Documents – совокупность открытых документов;

Paragraphs – все абзацы активного документа;

Sentences – семейство предложений активного документа;

Words – совокупность слов активного документа;

Characters – совокупность символов текста активного документа.

А основными семействами Excel являются:

Workbooks – все открытые рабочие книги;

Worksheets – совокупность рабочих листов активной рабочей книги;

Charts – семейство диаграмм активной рабочей книги.

Свойства, методы, события

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

Со свойствами обычно работают так:

Объект.Свойство=Значение

Selection.Font.Color = 153

Selection.Font.Bold = True

Такой командой мы присваиваем некое значение свойству объекта.

А так: Переменная=Объект.Свойство можно присвоить некоей переменной свойство объекта.

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

Действия, которые выполняются над объектом или семейством, – это методы.

Обращение к методам объектов в VBA ведется таким образом:

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

Возможны и другие варианты использования методов. Например, если в метод нужно передать какой-то параметр, его вызов будет выглядеть так:

Объект.Метод (Параметры)

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

С помощью методовобъекта мы даем объекту команды.

Например, такая команда: Application.Quit, приводит к закрытию приложения. Очевидно, что Application - это объект "Приложение", а Quit - это метод "Выйти".

Например, метод Activate семейства Worksheets позволяет активизировать нужный Лист рабочей книги Excel, а метод Close – закрывает активный документ или рабочую книгу.

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

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

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

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

Чтобы задать значение свойства, надо указать объект, через точку указать имя свойства, затем знак равенства и новое значение свойства.

Например, чтобы в Excel задать значение 10 конкретной ячейке рабочего листа, необходимо выстроить такую последовательность:

Application.Workbooks(n).­Worksheets(k).Range(“m”). Value=10

где Application- приложение;

Workbooks(n)– рабочая книга Excel, n- номер или имя рабочей книги (имя рабочей книги указывается в кавычках);

Worksheets(k) – рабочий лист n-й книги, k – имя или номер рабочего листа (имя листа указывается в кавычках);

Range(“m”)– диапазон ячеек k-ro рабочего листа, m– адрес ячейки;

Value– свойство, задающее ячейке значение “10”.

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

Application.Documents(n).









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2019 zdamsam.ru Размещенные материалы защищены законодательством РФ.