Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Тема 3. Использование языка Visual Basic For applications для реализации математических моделей и численных методов (6 часов) 3 страница



Ниже приведены наиболее часто используемые методы объекта Range.

Address

Возвращает адрес ячейки.

Синтаксис:

Address(rowAbsolute, columnAbsolute, _

referenceStyle, external, relativeTo)

Аргументы:

-rowAbsolute — допустимы два значения True и False, если используется значение True или аргумент опущен, то возвращается абсолютная ссылка на строку

- columnAbsolute — допустимы два значения True иFalse, если используется значение True или аргумент опущен, то возвращается абсолютная ссылка на столбец

- referenceStyle — допустимы два значения x1A1 и: x1R1c1, если используется значение x1A1 или аргумент опущен, то возвращается ссылка в виде формата А1

- external — допустимы два значения True и False, если используется значение False или аргумент опущен, то возвращается относительная ссылка

- relativeTo — В случае, если rowAbsolute и columnAbsolute равны False, a referenceStyle — x1Rlc1, то данный аргумент определяет начальную ячейку диапазона, относительно которой производится адресация

Следующий пример показывает различные результаты i адресации.

MsgBox Cells(1, 1).Address()

' В диалоговом окне отображается адрес $А$1

MsgBox Cells(1, 1).Address(rowAbsolute:=False)

' В диалоговом окне отображается адрес $А1

MsgBox Cells(1, 1).Address(referenceStyle:=x1R1C1)

' В диалоговом окне отображается адрес R1C1

AutoFit

Автоматически настраивает ширину столбца и высоту строки

Clear, ClearCoiranents, ClearContents, ClearFormats и

ClearNotes

Метод clear очищает диапазон.; В следующем примере очищается диапазон A1:G37.

Range("A1:G37").Clear

Методы ClearCoiranents, ClearContents, ClearFormats и ClearNotes очищают в диапазоне комментарии, содержание, форматы и примечания соответственно.

Сору

Копирует диапазон в другой диапазон или в буфер обмена.

Синтаксис:

Copy(destination)

- Аргумент destination определяет диапазон, куда копируется данный диапазон. Если аргумент destination опущен, то копирование происходит в буфер обмена.

В данном примере диапазон А1: D4 рабочего листа лист1 копируется в диапазон Е5:Н8 листа Лист2:

Worksheets("Лист!").Range("Al:D4").Сору destination:=Worksheets("Лист2").Range("E5")

Cut

Копирует диапазон с удалением в указанный диапазон или в буфер обмена.

Синтаксис:

Cut(destination)

- Аргумент destination определяет диапазон, в который копируется данный диапазон. Если аргумент destination опущен, то диапазон копируется в буфер обмена.

В данном примере диапазон А1:D4 рабочего листа Лист1 копируется с удалением в буфер обмена:

Worksheets{"Лист1").Range("Al:D4").Cut

Delete

Удаляет диапазон.В данном примере удаляется третья строка активной рабочей страницы:



Rows(3).Delete

Columns, Rows

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

В следующем примере переменным i и j присваиваются значения, равные количеству столбцов и строк в выделенном диапазоне соответственно:

i = Selection.Columns.Count

j = Selection.Rows.Count

Insert

Вставка ячейки или диапазона ячеек. i В следующем примере вставляется новая строка перед i четвертой строкой рабочего листа Лист1::

Worksheets("Лист1").Rows(4).Insert i

Offset

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

Синтаксис:

Offset(rowOffset, columnOffset)

Аргументы:

- rowOffset — целое число, указывающее сдвиг по строкам

- columnOffset — целое число, указывающее, сдвиг по столбцам

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

ActiveCell.Offset(rowOffset:=3, columnOffset:=-2).Activate

Select

Выделение диапазона

PasteSpecial

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

Синтаксис:

PasteSpecial(paste, operation, skipBlanks, transpose)

Аргументы:

- Paste — определяет ту часть содержимого буфера обмена, которая должна быть вставлена в диапазон. Допустимые значения:

• xlAll (все)

• xlFormulas (формулы)

• xlValues (значения)

• xlFormats (форматы)

• xlNotes (примечания)

• xlAllxceptBorders (без рамки)

- Operation — определяет операции. Допустимые значения:

• xlNone (нет)

• xlAdd (сложить)

• xlSubtract (вычисть)

• xlMultiply (умножить)

• xiDivide (разделить)

- skipBlanks — допустимые значения: True (пустые ячейки при вставке не учитываются) и False (пустые ячейки учитываются)

- Transpose — допустимые значения True (диапазон выводится транспонированным) и False (не транспонированным)

В приведенном ниже примере данные из диапазона C1:C5 рабочего листа лист1 вставляются в диапазон D1:D5 того же листа, причем они не заменяют уже существующие данные в диапазоне D1:D5, а прибавляются к ним данные из диапазона C1:C5:

Worksheets("Лист1").Range("C1:C5").Copy

Worksheets ("Лист1").Range ("Dl:D5"). PasteSpecial

operation:=xlAdd

Метод PasteSpecial программирует выполнение на рабочем листе команды Правка, Специальная вставка (Edit, Paste Special). Аргументы метода PasteSpecial соответствуют установкам диалогового окна Специальная вставка (Paste Special), отображаемого с помощью этой команды (рис. 3.2)

 

 

Рис. 2.2. Диалоговое окно Специальная вставка

 

AddComment

Добавляет примечание к диапазону.

Синтаксис:

AddComment (Text)

- Text — строковое выражение добавляемое в качествепримечания: В следующем примере создается примечание внимание ячейки A1 активного рабочего листа:

Range("А1").AddComment "Внимание!"

 

1.3 Переменные, массивы, условные конструкции, условные переходы

 

ТИПЫ ДАННЫХ

 

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

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

 

Тип данных

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

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

Byte (байт)

 

От 0 до 255

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

 

True или False

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

 

От -32 768 до 32 767

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

 

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

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

 

От -3.402823Е38 до -1.401298Е-45 для отрицательных значений

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

 

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

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

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

 

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

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

 

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

 

От 1 января 100 г. до 31 декабря 9999г.

Object (объект)

 

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

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

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

От 0 до приблизительно 2 миллиардов

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

Длина строки

От 1 до приблизительно 65 400

Variant (числовые подтипы)

 

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

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

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

От 0 до приблизительно 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. Использование этой инструкции полезно при отладке программ, т. к. она позволяет легче отслеживать возможную путаницу в именах при наборе программы.

 

ДОПУСТИМЫЕ ИМЕНА

 

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

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

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

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

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

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

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

процентная ставка

х__начзнач

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

ПроцентнаяСтавка

х_НачЗнач

 

ИНСТРУКЦИЯ DEFТИП

 

Инструкция DefТип (вместо тип в имени инструкции фигурируют буквы, обозначающие конкретный тип данных) используется на уровне модуля для задания типа данных по умолчанию для переменных, аргументов, передаваемых в процедуры, и значений, возвращаемых процедурами- Function и Property Get, имена которых начинаются с соответствующих символов.

 

Синтаксис:

 

DefBool ДиапазонБукв[, ДиапазонБукв]...

Тип данных Boolean Тип данных Byte

DefByfe ДиапазонБукв[, ДиапазонБукв]...

Тип данных Byte

DefInt ДиапазонБукв[, ДиапазонБукв]...

Тип данных Integer

DefLng ДиапазонБукв[, ДиапазонБукв]...

Тип данных Long

DefCur ДиапазонБукв[, ДиапазонБукв]...

Тип данных Currency

DefSng ДиапазонБукв[, ДиапазонБукв]...

Тип данных Single

DefDbl ДиапазонБукв[, ДиапазонБукв]...

Тип данных Double

DefDate ДиапазонБукв[, ДиапазонБукв]...

Тип данных Date

DefStr ДиапазонБукв[, ДиапазонБукв]...

Тип данных String

DefObj ДиапазонБукв[, ДиапазонБукв]...

Тип данных Object

DefVar ДиапазонБукв[, ДиапазонБукв]...

Тип данных Variant

 

Аргумент ДиапазонБукв имеет следующий синтаксис:

Буква1[-Буква2]

Аргументы Буква1 и Буква2 указывают границы диапазона имен, для которых задается тип данных по умолчанию.

В следующем примере инструкция устанавливает, что все переменные с именами, начинающимися с букв из диапазона от А до Q, имеют строковый тип:

DefStr A-Q

Инструкция Def Типдействует только на модуль, в котором она используется.

При указании диапазона букв обычно определяется тип данных по умолчанию для переменных, которые начинаются с первых 128 символов набора. Однако при указании диапазона A—Z задается тип данных по умолчанию для всех переменных, включая те, что начинаются с международных символов из расширенной части набора (128-255).

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

 

%

Integer

&

Long

!

Single

#

Double

@

Currency

S

String

 


МАССИВЫ

 

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

 

Dim B(3, 3) As Single

Dim A(12) As Integer

 

Первая строка объявляет двумерный массив 3x3 (матрицу), состоящий из действительных чисел. Вторая строка объявляет одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний А(11). В этом случае говорят, что 0 — базовый индекс. Можно изменить базовый индекс, написав в начале листа модуля инструкцию Option Base 1. После этого индексы массивов аив будут начинаться с единицы. Другим способом изменения базового индекса является использование ключевого слова то при объявлении массива:

Dim B(l То 3, 1 То 3) As Single

Dim A(l To 12) As Integer

 

Массив в программе определяется поэлементно. Например,

Dim B(l To 2, 1 То 2) As Single

B(1,1)=2

В(1,2)=4

В(2,1)=1

В(1,2)=6

 

Удобным способом определения одномерных массивов является функция Array, преобразующая список элементов, разделенных запятыми, в вектор из этих значений, и присваивающая их переменной типа variant. Например,

Dim A As Variant

А = Array{10,20,30)

В = А(2)

 

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

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

 

Dim R() as Single

 

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

Синтаксис:

ReDim [Preserve] ИмяПеременной(Индексы) [As Тип] _

[. ИмяПеременной(Индексы)[As Тип]]...

 

Аргументы:

 

Preserve

 

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

ИмяПеременной

 

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

Индексы

 

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

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

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

Тип

Тип данных массива

 

Например, установим границы массивы r:

ReDim R(1 To 10)

 

Допустимо повторное использование инструкции ReDim для изменения числа элементов и размерностей массива.

 

Функции и процедуры для работы с массивами

 

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

Array(СписокАргументов)

Создает массив типа variant. Аргумент CписокАргументов представляет разделенный запятыми список значений, присваиваемых элементам массива.

Пример:

Dim День As Variant

День = Array("Пн", "Вт", "Ср", "Чт", "Пт")

IsArray(ИмяПеременной)

Возвращает True, если переменная содержит массив; в противном случае возвращается False. Функцию IsArray используют для проверки значений переменных типа Variant, содержащих массивы

[, размерность])

 

Размерность — целое число, указывающее размерность, нижнюю или верхнюю границу которой возвращает функция. Для первой размерности следует указать 1, для второй 2 и т. д. Если аргумент Размерность опущен, подразумевается значение 1

Erase СписокМассивов

 

Повторно инициализирует элементы массивов фиксированной длины и освобождает память, отведенную для динамического массива. СписокМассивов представляет имена одной или нескольких очишаемых переменных массивов, разделенных запятой. Инструкция Erase устанавливает элементы массивов фиксированной длины следующим образом: массив чисел или строк фиксированной длины (присваивает каждому элементу значение 0), массив строк переменной длины (присваивает каждому элементу значение пустой строки), массив типа variant (присваивает каждому элементу значение Empty).

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

 

КОНСТАНТЫ

 

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

Синтаксис:

[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 Фирма = "ООО Бескрайние просторы"

 

ТИП ДАННЫХ, ОПРЕДЕЛЕННЫЙ ПОЛЬЗОВАТЕЛЕМ

 

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

 

Синтаксис:

[Private | Public] Туре ИмяПеременной

ИмяЭлемекта [([Индексы])] As тип

[ИмяЭлемента [([Индексы])] из тип]

End Type

 

Аргументы:

 

Public

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

Private

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

ИмяКонстанты

Имя типа, определяемого пользователем

ИмяЭлемента

Имя элемента, определяемого пользователем типа

Индексы

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

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

Тип

Тип данных элемента; поддерживаются типы: Byte,

Boolean, Integer, Long, Currency, Single, Double, Date, String (для строк переменной длины), String* длина (для строк фиксированной длины), Object, Variant и другой, определяемый пользователем тип

 

В данном примере инструкция туре используется для определения типа данных (только на уровне модуля). При появлении в модуле класса инструкции Туре должно предшествовать ключевое слово Private.

‘ Тип, определенный пользователем

Туре Студент i

' Элементы типа данных i

Фамилия As String * 20 Имя As String * 20

Отчество As String * 20

НомерЗачетки As Integer

Группа As String * 10

Курс As Long

ДатаРождения As Date

End Type

Sub ВводДанных()

 

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

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

‘Присвоение значений элементам переменной Экономист i

With Экономист

.НомерЗачетки = 12003

.Группа = "Менеджмент"

End With

End Sub

Можно создавать массив, содержащий элементы собственного типа. Например, следующий массив состоит из сведений о 20 студентах.

 

Dim СтудентЭкономист(1 to 20) As Студент

‘Присваивает значения элементам первой компоненты массива t

СтудентЭкономист(1). Фамилия = "Промокашкин"

СтудентЭкономист{1). Имя = "Евстегней"

СтудентЭкономист(1). Отчество = "Поликарпович"

 

ОПЕРАЦИИ VBA

 

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

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

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

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

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

 

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

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

Сложение

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

Вычитание

- [Операнд]

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

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

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

Умножение

Деление

[0перанд1] \ [Операнд2]

Целочисленное деление

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

Остаток от деления по модулю

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

Возведение в степень

 

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

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

Меньше

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

Больше

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

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

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

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

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

Не равно

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

Равно

[Операнд1] Is [Операнд2)

Сравнение двух операндов, содержащих ссылки на объекты

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

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

 

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

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

Логическое умножение

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

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

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

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

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

Логическое отрицание

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

Логическая импликация (в настоящее время почти не используется)

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

Логическая эквивалентность (в настоящее время почти не используется)

 


Дата добавления: 2015-11-04; просмотров: 16 | Нарушение авторских прав







mybiblioteka.su - 2015-2024 год. (0.076 сек.)







<== предыдущая лекция | следующая лекция ==>