12_Шишкина Л.П., Бояринцева Т.П., Сержант Т.Н_Лаб_практикум по информатике_VBA_2012
.pdfEmpty - не получила начального значения. Переменная типа Variant, содержащая значение Empty, рассматривается как 0 в контексте математических операций и как пустая строка ("") в контексте операций со строковыми значениями.
Null - не содержит данных, это значение можно присвоить переменной.
Error - является специальным значением, которое используется для указания возникновения условия ошибки в процедуре.
VBA позволяет использовать переменные без предварительного описания, поэтому переменная Nprf сразу используется в инструкции присваивания. Она имеет тип Variant по умолчанию. Такой стиль “ввода в действие” переменных довольно опасен, т.к затрудняет поиск ошибок. ПоэтомуVBA позволяет наложить требование на явное описание всех переменных в модуле. Для этого в описательную часть модуля (до процедур) надо включить инструкцию Option Explicit. Если теперь попытаться использовать в тексте процедур необъявленные переменные, VBA сразу обнаружит ошибки.
Иногда имена записывают так: Номер_строки или НомерСтроки. Применение полных имен особенно полезно для глобальных переменных, которые хранят параметры моделируемых объектов и явлений. В компактных процедурах удобнее пользоваться переменными, применяемыми в математике и физике, например: X – координата, M – число строк в матрице или таблице, i – номер очередной строки, N – число столбцов, j – номер текущего столбца, V – скорость, S – путь и т.п.
Кроме возможности явного задания типа переменной, VBA позволяет указать тип переменной неявно, добавив к ее имени символ-указатель:
$ - для типа данных String, например, ФИО$ = ”Иванов И.И.” ; % - для данных типа Integer, например, i% = 1;
& - для данных типа Long, например, CX& = 6510200; ! - для данных типа Single, например, x! = 107.315;
# - для данных типа Double, например, Pi# = 3.14159; @ - для данных типа Currency, например, SS@ = 67920.12
Такой подход вряд ли стоит рекомендовать, но иногда он может способствовать наглядности. Наряду с переменными, для хранения данных во время работы приложения используются
массивы переменных, или просто массивы. Массив описывается так же, как одиночная переменная, только после имени в скобках указывается еще размерность:
Dim V(1 to 200) As Single, T(1 to 200) As Single, i As Integer
Так можно описать массивы измеренных значений скорости и времени. При вычислениях i-ый элемент массива указывают с помощью индекса:
S=S+(V(i)+ V(i+1))*0.5*(T(i+1)-T(i))
Если при описании массива размерность задать одним числом, например, V(200), то будет считаться, что нумерация элементов массива начинается с 0 и оканчивается числом 200. Если в описательную часть модуля (до процедур) включить инструкцию Option Base 1, то нумерация элементов массива будет начинаться с 1. Кроме одномерных массивов, используются многомерные. Предположим, что на листе Excel в первом столбце размещены идентификаторы строк, например, Y1,Y2,…,YI,…,YM , а в первой строке – идентификаторы столбцов: X1,X2,…,XJ,…,XN. На пересечении I-ой строки и J-го столбца находится элемент aIJ
|
X1 |
X2 |
……… |
XJ |
……… |
XN |
Y1 |
a11 |
a12 |
……… |
a1J |
……… |
a1N |
Y2 |
a21 |
a22 |
……… |
a2J |
……… |
a2N |
……… |
……… |
……… |
……… |
……… |
……… |
……… |
YI |
aI1 |
aI2 |
……… |
aIJ |
……… |
aIN |
……… |
……… |
……… |
……… |
……… |
……… |
……… |
YM |
aM1 |
aM2 |
……… |
aMJ |
……… |
aMN |
Рис. 2. Размещение матрицы с элементами a(I, J) на листе Excel
11
матрицы (Рис.2.).
В этом примере матрица представляет собой таблицу коэффициентов, позволяющих связать любой YI уравнением со значениями X1,…,XN:
YI=aI1*X1+aI2*X2+…+aIJ*XJ+…+aIN*XN
Другими словами, мы имеем матричную запись системы линейных уравнений. Пусть для последующей работы с матрицей требуется задать M, N, разместить идентификаторы YI (I=1,…,M) и XJ (J=1,…N) в массивах CY, CX, а элементы матрицы в двумерном массиве A(I,J).
Этот пример иллюстрирует часто встречающуюся ситуацию: в момент составления программы обычно не известно количество элементов массива – оно определяется программой во время исполнения. Если заранее можно оценить максимальную длину массива, то его часто резервируют с расчетом на максимальную размерность. Так, в нашем случае можно принять ограничение: разрабатываемая программа предназначается для работы с матрицами, у которых число строк и столбцов не превышает 40. Тогда инструкция для резервирования массивов будет иметь вид:
Dim CY(1 to 40), CX(1 to 40), A(1 to 40,1 to 40) As Double
Visual Basic предоставляет и другую возможность – динамического переопределения размерности массивов.
1.При резервировании массива размерность не указывается. Например, Dim a() as Single.
2.В процедуре вычисляется необходимый размер массива и присваивается некоторой переменной n.
3.Выполняется изменение размерности массива: Redim a (1 to n)
Допустимо повторное использование инструкции Redim Рассмотрим следующий модуль:
Option Explicit
Dim CY( ), CX( ), A( ) As Double
Dim I As Integer, J As Integer, M As Integer, N As Integer
Private Sub CommandButton1_Click( )
N=TextBox1.Value : M=TextBox2.Value 'Определение M, N - размерности матрицы ReDim CY(1 To M)
ReDim CX(1 To N) 'Изменение размерности массивов
ReDim A(1 To M, 1 To N)
TabCXCY ' Копирование идентификаторов столбцов и строк в массивы CX, CY TabA ' Копирование матрицы в массив A
End Sub |
|
Private Sub TabCXCY( ) |
|
For J = 1 To N |
'Идентификаторы столбцов |
CX(J) = Cells(1, J + 1).Value |
|
Next J |
|
For I = 1 To M |
'Идентификаторы строк |
CY(I) = Cells(I + 1, 1).Value |
|
Next I |
|
End Sub
Private Sub TabA( )
For I = 1 To M
For J = 1 To N
A(I, J) = Cells(I + 1, J + 1).Value
Next J
Next I
End Sub
12
Этот модуль содержит событийную процедуру CommandButton1_Click, решающую поставленную выше задачу при нажатии кнопки на листе Excel (на рис. 2 показана только сама матрица, причем символически), и общие процедуры: TabCXCY – копирование идентификаторов столбцов и строк в массивы CX, CY; TabA – копирование матрицы из таблицы на листе Excel в двумерный массив A; M и N вводятся в поля TextBox1 и TextBox2.
Массивы CX, CY, A и основные переменные, требуемые для работы с матрицей, определены на уровне модуля, т.е. доступны всем его процедурам. Элементы массивов CX и CY имеют тип VARIANT, т.к. для них тип явно не указан. Выбор типа VARIANT для этих массивов обусловлен тем, что при последующем расширении написанного модуля в этих массивах, возможно, потребуется размещать не имена строк и столбцов, а сами значения YI и XJ. Обратим внимание на то, что все три массива в начале модуля определены без указания размерности, т.е. как динамические, а в процедуре CommandButton1_Click наши массивы переопределены – но только после ввода M и N. Приведенные процедуры еще пригодятся для пояснения циклов и как пример для самостоятельной разработки процедур на лабораторных занятиях.
Завершая рассмотрение массивов, заметим, что в математике аналогом программисткого термина одномерный массив является понятие вектор. Вектор можно и нужно толковать не только геометрически: в общем случае это набор значений, например, свойств (признаков) объекта. Если представить себе многомерную систему координат, где по каждой оси отложено значение одного из свойств объекта (скажем, длина автомобиля, расход горючего, максимальная скорость и т.д.), то каждый объект в такой системе координат будет точкой – точкой в признаковом пространстве. Совокупность значений отдельных координат (в нашем примере – длины автомобиля, расхода горючего, максимальной скорости и др.) и есть вектор. Понятие вектора очень удобно для краткой записи операций с массивами чисел. Кстати, математический термин матрица соответствует двумерному массиву. Матрицу можно рассматривать как совокупность векторов-строк или векторов-столбцов.
Теперь рассмотрим конструирование собственных типов данных. Например, для хранения записей о книгах определим в начале модуля тип данных RecBook с помощью инструкции:
Type RecBook
Название As String*50 Автор As String*20
Издательство As String*16
Год As Integer End Type
Теперь в этом же модуле или в одной из его процедур зарезервируем массив для хранения записей о книгах:
Dim Books(500) As RecBook
Для доступа к полям Издательство и Год в i-ой записи массива воспользуемся инструкциями:
Books(i).Издательство=”Недра” : Books(i).Год=1999
В этом пособии мы намеренно пользуемся примерами, а не строгими определениями синтаксиса инструкций VBA. Как уже отмечалось, такие определения легко получить в справочной системе Visual Basic – когда программист тонет, он кричит <F1> !
Кроме переменных, в программах используются данные, значения которых не изменяются
– это константы. Приведем примеры их определения:
Const Pi As Double = 3.14159
Const Nmin As Long = 0
Const Nmax As Long = 999999
13
Определив константы один раз, например, в начале модуля, ими можно пользоваться во многих инструкциях, не вспоминая каждый раз точное значение числа π. Если же в процессе разработки программы потребуется изменить ограничение Nmax , то это надо будет сделать в единственной инструкции.
Некоторые данные во время работы приложения могут храниться в качестве свойств объектов: свойств ячеек листа Excel, свойств элементов управления и др. Приведем примеры:
Лист2.Cells(2,6).Formula = “=Sum(B1:B5)” Лист2.Range("A1:D4").Value = Range("A1:D4").Value TextBox1.Text = “M=” & Str(M) & “ S=” & Format(S, “0.00”)
В первом примере свойству Formula объекта Cells(2,6) , принадлежащего, в свою очередь, объекту Лист2, присваивается конкретная формула. Этот пример, кстати, показывает, как при программировании на VBA можно пользоваться встроенными в Excel формулами. Но верно и обратное: разрабатывая функции на VBA, можно расширить набор формул, доступных в Excel. Во втором примере значения, хранимые в прямоугольной области ячеек на текущем (активном в момент выполнения инструкции) листе, присваиваются ячейкам одноименной области на листе 2. В третьем примере с помощью операции конкатанации (&) три подстроки объединяются (суммируются) в одну строку, и эта строка присваивается свойству Text объекта TextBox1. Cells (Row,Column) обозначение ячейки, где Row - номер строки, а Column - номер столбца. Например, ячейка A2 обозначается Cells(2,1). Последний пример показывает, как значения M и S вывести в поле, размещенное на форме или на листе Excel.
5. Основные инструкции языка Visual Basic
Сгруппируем основные инструкции языка Visual Basic по типу операций:
-присваивания, в том числе с выполнением математических операций в правой части инструкции;
-проверки условий, управления последовательностью исполнения инструкций, организации циклов;
-инструкции для работы с файлами.
Последняя группа инструкций в этом кратком пособии не рассматривается. При необходимости с ними можно познакомиться самостоятельно [2, 4].
Инструкция присваивания предписывает найти значение выражения, заданного в ее правой части, и присвоить результат переменной, идентификатор которой расположен в левой части. Например, присвоить переменной x значение 2 - это можно записать: x=2; в следующем примере значение переменной x увеличивается на 2: x = x + 2. Рассмотрим математические операции, которые используются в выражениях, стоящих в правой части инструкций присваивания. Среди возможных операций можно выделить арифметические, конкатанации строк, сравнения и логические.
Арифметические операции выполняются над числами, и их результатом являются числа. Они перечислены в таблице 3. При программировании формул необходимо учитывать приоритеты операций и в случае необходимости использовать скобки, как это принято в математике. Поясним таблицу 3. Смена знака имеет место, когда минус ставится перед именем переменной, константы или перед числом. Например: F=CX*(-G^2) ; если CX=3, а G=1.5 , то F = -6.75. Чтобы убедиться в правильности результата, достаточно на листе Excel разместить кнопку CommandButton1 и поле TextBox1, а в событийную процедуру CommandButton1_Click
включить инструкции:
Dim I As Integer, F As Single
F = 3 * (-1.5 ^ 2) : I = 3 * (-1.5 ^ 2)
TextBox1.Text = "F=" & Format(F, "0.00") & " I=" & Str(I)
Выйдя из режима конструктора и нажав кнопку, увидим в поле TextBox1 результаты.
14
|
|
|
|
Таблица 3. |
|
|
|
|
Арифметические операции |
|
|
||||
|
|
|
|
|
|
|
|
|
|
Прио- |
Примеры |
|
Результаты |
||
Операция |
Наименование |
I – |
F – |
|
|
||
ритет |
Целое число |
действитель- |
I |
F |
|||
|
|
||||||
|
|
|
|
ное число |
|
|
|
^ |
Возведение в степень |
1 |
I = 1.5^2 |
F = 1.5^2 |
2 |
2.25 |
|
- |
Смена знака |
2 |
I = -6.75 |
F = -6.75 |
-7 |
-6.75 |
|
* |
Умножение |
3 |
I = 1.3*4 |
F = 1.3*4 |
5 |
5.20 |
|
/ |
Деление |
3 |
I = 10/3 |
F = 10/3 |
3 |
3.33 |
|
\ |
Деление нацело |
4 |
I = 10\3 |
F = 10\3 |
3 |
3.00 |
|
Mod |
Остаток от деления |
5 |
I = 10 Mod 3 |
F = 10 Mod 3 |
1 |
1.00 |
|
+ |
Сложение |
6 |
I = 12 + 7 |
F = 11.45+7.55 |
19 |
19.00 |
|
- |
Вычитание |
6 |
I = 7-12 |
F = 7.55-11.45 |
-5 |
-3.90 |
Все результаты примеров легко проверить, подставляя в текст приведенной только что процедуры формулы вычисления I и F. Из этих примеров должно быть понятно, что результат арифметических операций зависит также от типа переменной, которой он присваивается – ведь переменная целого типа не может хранить число с плавающей точкой, и поэтому перед записью в ячейку I результат округляется.
Приведенная выше процедура иллюстрирует и конкатанацию (&) – слияние строк. К строке “F=” прибавляется строка, содержащая отформатированное значение F (с двумя цифрами после десятичной точки). К этой объединенной строке добавляется “ I=” и далее - превращенное в последовательность символов (в строку) число I.
Операции сравнения используют для сравнения чисел, значений переменных, констант, ячеек таблиц. Результат операции сравнения имеет тип Boolean – может принимать значение
True или False (Таблица 4).
|
|
|
Таблица 4. |
|
|
|
Операции сравнения |
|
|
|
|
|
|
|
Операция |
Наименование |
|
Пример (R имеет тип Boolean) |
Результат ® |
= |
Равно |
|
R = (10=5) |
False |
> |
Больше |
|
R = 10>5 |
True |
< |
Меньше |
|
R = 10<5 |
False |
>= |
Больше или равно |
|
R = “a” >= “b” |
False |
<= |
Меньше или равно |
|
R = “a” <= “b” |
True |
<> |
Не равно |
|
R = “a” <> “b” |
True |
В логических операциях не только результат, но и операнды имеют тип Boolean.
Таблица 5.
|
Логические операции |
|
|
Операция |
Наименование |
And |
Логическое умножение |
Or |
Логическое сложение |
Xor |
Исключающее Or (или) |
Not |
Логическое отрицание |
|
15 |
Поясним назначение таких операций на простом примере. Пусть переменная типа Boolean с именем R должна принимать значение True, если точка с координатами X,Y попадает в прямоугольную область, ограниченную координатами X1,X2 и Y1,Y2. Если точка за пределами прямоугольника, то R=False. Применив логическую операцию AND (И), вычислим значение R:
R = (X>=X1) AND (X<=X2) AND (Y>=Y1) AND (Y<=Y2)
Смысл этой операции в том, что если и первое выражение (X больше или равно X1) истинно, и второе истинно, и третье истинно, и четвертое истинно, то R=True. Если один из операндов логической операции AND представляет собой ложное выражение (утверждение), то и результатом будет False.
Кроме операции AND, к числу часто используемых логических операций относятся OR и NOT. Первая из них дает результат True, если истинно хотя бы одно выражение, являющееся операндом. Операция NOT изменяет результат на противоположный, подобно смене знака в арифметическом выражении. Вычислим R с помощью этих операций:
R = NOT ((X<X1) OR (X>X2) OR (Y<Y1) OR (Y>Y2))
Выражение, стоящее в скобках после операции NOT, истинно (True), если точка или левее, или правее, или ниже, или выше воображаемого прямоугольника, т.е. если точка в него не попала. В этом случае R будет иметь значение False благодаря логическому отрицанию NOT.
Несколько реже используются логические операции XOR (исключающее ИЛИ), EQV (эквивалентность) и IMP (импликация). Первая из них дает результат True, если только одно из выражений-операндов имеет результат True. Результатом операции EQV будет True, если выражения-операнды дают одинаковый результат. Результатом IMP будет True, если выражения-операнды дают разные результаты.
Перейдем теперь ко второй, важнейшей в любом языке программирования, группе инструкций. Это инструкции проверки условий и организации циклов. Все они позволяют управлять последовательностью исполнения инструкций в программе.
Инструкция IF (ЕСЛИ) используется в двух нотациях: в виде простой и блочной структур. Инструкция простой структуры имеет следующую форму записи:
If <Выражение> Then <Инструкция, исполняемая, если выражение-условие истинно> Конструкция блочной структуры может включать один блок инструкций (<Блок 1>), исполняемых, если выражение 1 истинно, или же еще дополнительные условия, сопровождаемые блоками инструкций:
If <Выражение1> Then
<Блок 1 – исполняется, если выражение 1 истинно>
ElseIf <Выражение2> Then
<Блок 2 – исполняется, если выражение 2 истинно >
ElseIf <Выражение3> Then
<Блок 3 – исполняется, если выражение 3 истинно >
…………………..
Else
<Блок инструкций, исполняемых, если ложны выражения в инструкциях If и ElseIf>
End If
|
|
|
|
|
|
|
|
Приведем примеры простой инструкции If: |
1) Вычисление значения функции: |
||||||||
|
1 y2 |
|
|
y 0 |
||||
|
|
|
|
|
, |
|
|
|
|
|
|
|
|
|
|
||
|
1 y4 |
|
|
|
||||
G= |
|
|
|
|||||
|
|
|
sin2 |
y |
y 0 |
|||
|
2y+ |
|
|
, |
||||
|
|
|
2 y
If y <= 0 Then G = (1 + y^2) / Sqr(1 + y^4) Else G = 2 * y + sin(y)^2 / (2+y)
2) Сообщение, если R – истинно: If R Then MsgBox “Точка попала в прямоугольник”
16
Теперь пример блочной структуры: R = False
If X < X1 Then
GoTo 10 ’уже ясно, что точка не попала в прямоугольник
ElseIf X > X2 Then
GoTo 10 ‘управление передается на метку 10 ElseIf Y < Y1 Then
GoTo 10 ElseIf Y > Y2 Then GoTo 10
Else
R = True
End If
10: MsgBox R ’после метки ставится двоеточие
Блоки ElseIf и (или) Else могут отсутствовать. В любом случае блочная конструкция оканчивается инструкцией End If.
Приведенный пример, кроме блочной конструкции IF, поясняет возможность использования в программе меток и передач управления с помощью инструкции GoTo. Метка не обязательно обозначается числом – можно было написать и N10 или MsgR.
В ситуациях, когда требуется запрограммировать три и более разветвлений в зависимости от значения одной переменной, удобно использовать структуру Select Case:
Select Case <Переменная>
Case <Значение 1> либо Case is <Условие 1>
<Блок 1 – выполняется, если значение переменной равно значению 1 или соответствует условию 1>
Case <Значение 2> либо Case is <Условие 2>
<Блок 2 – выполняется, если значение переменной равно значению 2 или соответствует условию 2>
………………….
End Select
Приведем пример:
Возраст = TextBox1.Value Select Case Возраст Case Is < 13
Label1.Caption = "После 22-00 спать !" Case 16
Label1.Caption = "Пора получать паспорт" Case Is < 18
Label1.Caption = "Только чай !" Case Is >= 18
Label1.Caption = "Можно почти все!" End Select
Теперь рассмотрим организацию циклов. Циклы применяются для многократного повторения одной или нескольких инструкций. Вообще говоря, цикл нетрудно организовать и без специальных инструкций по схеме:
1)инструкции присваивания начальных значений переменной цикла и другим переменным;
2)инструкции, исполняемые при очередном значении переменной цикла;
17
3)наращивание (изменение) переменной цикла и, возможно, других переменных, изменяемых одновременно с переменной цикла;
4)проверка переменной цикла на соответствие условию, при котором цикл должен исполняться повторно, и передача управления блоку 2 при выполнении этого условия
(IF <условие> GoTo <метка в начале блока 2>).
Но в языках высокого уровня, и в том числе в VBA, предусмотрены инструкции, позволяющие записывать циклы еще компактнее. Проще всего цикл записывается, если известны начальное, конечное значения переменной цикла и шаг ее изменения. В таких случаях используют инструкцию For…Next , имеющую следующий синтаксис:
For счетчик = начало To конец [Step шаг] [инструкции]
[Exit For] [инструкции] Next [счетчик]
Инструкции For…Next в общем случае содержит следующие элементы:
Счетчик (переменная цикла) - числовая переменная, используемая в качестве счетчика цикла. Эта переменная не может иметь тип Boolean или быть элементом массива.
Начало - начальное значение переменной цикла. Конец - конечное значение переменной цикла.
Шаг - необязательный аргумент. Значение, на которое изменяется счетчик при каждом выполнении тела цикла. Если это значение не задано, по умолчанию шаг равен 1. Шаг может быть как положительным, так и отрицательным
Инструкции - одна или несколько инструкций между For и Next, которые выполняются указанное число раз.
После выполнения всех инструкций цикла значение шаг добавляется к текущему значению переменной счетчик. После этого инструкции цикла либо выполняются в очередной раз, либо цикл завершается и выполнение продолжается с инструкции, следующей за инструкцией Next.
Пусть в J-ом столбце на листе Excel надо суммировать четные ячейки до строки 20, но
только пока не встретится число 7777: |
|
J = 1: S = 0 |
|
For I = 2 To 20 Step 2 |
|
F = Cells(I, J).Value |
|
If F = 7777 Then Exit For |
'Выход из цикла - на инструкцию после Next |
S = S + F |
|
Next I |
|
MsgBox "i= " & Str(I-2) & " S=" & Str(S) |
|
После выхода из цикла сообщается номер последней ячейки, значение которой добавлено к S и сама накопленная сумма.
Вбольшинстве случаев циклы этого типа выглядят проще, т.к. обычно не требуется задавать шаг изменения переменной цикла (Step) и не нужно выходить из цикла по дополнительному условию (Exit For). В модуле, приведенном после рис. 2, такие циклы используются в процедурах TabCXCY и TabA. В последней процедуре – вложенный (двойной) цикл.
Втех случаях, когда нет возможности указать начальное и конечное значения переменной цикла, используют циклы типа Do-Loop. Для таких циклов возможны 4 варианта записи:
18
1) |
условие True в начале цикла |
2) |
условие False в начале цикла |
|
Do While <условие> |
|
Do Until <условие> |
|
<инструкции, исполняемые в цикле> |
|
<инструкции, исполняемые в цикле> |
|
Loop |
|
Loop |
|
|
|
|
3) |
условие True в конце цикла |
4) |
условие False в конце цикла |
|
Do |
|
Do |
|
<инструкции, исполняемые в цикле> |
|
<инструкции, исполняемые в цикле> |
|
Loop While <условие> |
|
Loop Until <условие> |
|
|
|
|
В число инструкций, исполняемых в цикле, может быть включена инструкция Exit Do, если из цикла надо выйти “досрочно”, например, при выполнении какого-нибудь дополнительного условия. Заметим, что Do While означает Выполнять пока… Do Until означает Выполнять пока не … Другими словами, вместо Do Until можно написать Do While Not. В некоторых случаях эти проверки удобнее ставить в конец цикла (Loop – цикл, дословно – петля). Приведем пример цикла Do While: известно, что сумма S числового ряда 1, 1/2, 1/3, 1/4, …,1/N (где N - целое положительное число) может быть сколь угодно большой (для любого числа M можно найти такое значение N, что S>M). Для решения задачи на лист Excel поместим кнопку
(CommandButton1), поле (TextBoxM) для М, поле (TextBoxS) для S, поле (TextBoxN) для N.
Sub CommandButton1_Click()
Dim M as Integer, N as Long, S as Single
S=0: M=TextBoxM.Value: N=0
Do While S<=M
N=N+1
S=S+1/N
Loop
TextBoxS.Value=S
TextBoxN.Value=N
End Sub
Таблица 7.
Часто используемые встроенные функции Visual Basic
Категория функций |
Примеры функций |
|
Математические |
ABS( ) |
- абсолютное значение числа |
|
RND( ) |
- случайное число |
|
INT( ) |
- целая часть числа |
|
SQR( ) |
- квадратный корень |
|
Тригонометрические функции, логарифмы и др. |
|
|
Для тригонометрических функций обязательный аргумент число |
|
|
представляет значение типа Double или любое допустимое |
|
|
числовое выражение, задающего угол в радианах, для |
|
|
преобразования градусов в радианы следует умножить градусы |
|
|
на pi/180. COS( ) - косинус числа, SIN( ) - синус числа, TAN( ) - |
|
|
тангенс числа, ATN( ) - арктангенс числа. |
|
|
LOG( ) - натуральный логарифм, для вычисления логарифма |
|
|
числа x по основанию n следует разделить натуральный |
|
|
логарифм числа x на натуральный логарифм числа n: |
|
|
Logn(x) = Log(x) / Log(n). |
|
|
EXP( ) - экспонента |
19
Категория функций |
Примеры функций |
|
Строковые |
LCASE( ) – преобразование строки в строчные буквы |
|
|
UCASE( ) – преобразование строки в заглавные буквы |
|
|
LEN( ) |
- определение длины строки и др. |
|
INSTR( ) – позиция первой встречи одной строки внутри другой |
|
|
|
|
Даты и времени |
DATE( ) |
- текущая дата |
|
TIME( ) |
- текущее время |
|
NOW( ) |
- текущая дата и время |
|
DAY( ) |
- номер дня года и др. |
Преобразования |
CINT( ) |
- действительного числа в целое (с округлением) |
типов данных |
CSTR( ) |
- числа в строку символов |
|
CVAR( ) |
- преобразование в тип данных VARIANT |
|
FORMAT( )- форматирование данных, формирование строк |
|
|
VAL( ) |
- преобразование строки символов в число и др. |
6. Создание пользовательских форм
Пользовательская форма UserForm предоставляет пользователю возможность создавать диалоговые окна разрабатываемых приложений. Она служит базой пользовательского диалогового окна, на которой в зависимости от решаемой задачи размещают требуемые элементы управления.
Свойства формы
Name |
Имя |
||
Caption |
Заголовок |
||
BackColor |
Цвет фона |
||
BorderStyle |
Тип границы |
||
Picture |
Рисунок, отображаемый как фон формы |
||
Left и Top |
Местоположение верхнего левого угла формы |
||
Height и Width |
Высота и ширина формы |
||
StartUpPosition |
Положение формы при ее первом отображении. Допустимые значения: |
||
|
Manual - начальное значение не устанавливается, CenterOwner - |
||
|
выравнивание по центру объекта, к которому принадлежит форма, |
||
|
CenterScreen - выравнивание по центру экрана, Windows Default - |
||
|
положение верхнего левого угла экрана. |
||
Методы формы |
|
|
|
|
|
|
|
Show |
|
Показать форму |
|
Hide |
|
Скрыть форму |
|
Move |
|
Изменить положение и размер формы |
|
PrintForm |
|
Печатать изображение формы |
|
События формы |
|
|
|
|
|
|
|
Initilize |
|
Действия выполняемые при отображение формы на экране (например, |
|
|
|
задание значений по умолчанию для элементов управления размещенных |
|
|
|
на форме) |
|
Terminate |
|
Действия выполняемые при закрытии формы |
20