Лаб_VBA
.pdfменьшей точностью, чем фактический тип результата выражения, VBA округляет результат выражения до тех пор, пока его точность не совпадет с ожидаемым типом. Например, если вы присваиваете численное выражение, имеющее результатом число типа Double, переменной типа Integer, VBA округляет число двойной точности до типа Integer.
При преобразовании числа в строку VBA создает строку, содержащую все цифры этого числа и десятичный знак (если число имеет его). Число 3413.72 (точка используется для записи числа в коде), например, преобразуется в строку "3413,72". Если число очень большое или очень маленькое, VBA может создать строковое представление числа в экспоненциальной записи; например, число
0.0000000004927 преобразуется в строку "4,927Е–11".
VBA может преобразовывать строку в число, если только эта строка содержит символьное представление числа в десятичном формате или экспоненциальном. Строки "988,6", "812", "-186,7", "1,ЗЕ10" представляют числа, и VBA может преобразовать их в числа. Строки "1.045", "$74.550" и "С добрым утром!" не могут быть преобразованы в числа.
Когда VBA преобразует значения типа Boolean в числа, значение True преобразуется в 1, а значение False – в 0. Когда VBA преобразует число в тип Boolean, нуль преобразуется в False, а любое другое значение преобразуется в True. Когда VBA преобразует значения типа Boolean в строки, VBA использует строку "True" для
True и "False" – для False.
Оператор присваивания ( = )
Этот оператор используется для присваивания результата выражения переменной. Синтаксис оператора присваивания следующий:
31
varname = expression
переменная varname - любая переменная, a expression - любое выражение.
При выполнении оператора присваивания VBA сначала вычисляет выражение справа от оператора присваивания « = », а затем сохраняет результат выражения в переменной, имя которой находится слева от оператора присваивания.
Когда присваивается результат выражения переменной с определенным типом данных, этот результат может иметь тип данных, совместимый с типом переменной, получающей новое значение. Во многих случаях, VBA может преобразовывать тип данных результата выражения в тип, совместимый с типом переменной, принимающей новое значение, если результат выражения и переменная еще не имеют совместимых типов. Переменным типа Variant может быть присвоен любой тип данных.
Арифметические операции
VBA может выполнять все обычные арифметические операции (реализуемые посредством арифметических выражений): сложение, вычитание, умножение и деление, а также возведение чисел в указанную степень и предоставляет дополнительные особые математические операции для целочисленного деления и деления по модулю (табл. 1.3).
32
Таблица 1.3. - Обозначения, используемые в арифметических выражениях (Ni - это допустимое численное выражение VBA)
Знак |
Синтаксис |
Имя/Описание |
|
+ |
N1 |
+ N2 |
Сложение. Прибавляет N1 к N2 |
– |
N1 |
– N2 |
Вычитание. Вычитает N2 из N1 |
* |
N1 |
* N2 |
Умножение. Умножает N1 на N2 |
/ |
N1 |
/ N2 |
Деление. Делит N1 на N2. |
\ |
Nl \ N2 |
Целочисленное деление. Делит N1 на N2, отбра- |
|
|
|
|
сывая любую дробную часть так, чтобы резуль- |
|
|
|
|
|
N1 Mod N2 |
Деление по модулю. Делит N1 на N2, возвращая |
|
|
только остаток операции деления. |
||
|
|
|
|
^ |
N1 |
^ N2 |
Возведение в степень. Возводит N1 в степень N2. |
Оба операнда должны быть численными выражениями или строками, которые VBA может преобразовать в число.
Операции сравнения
Операции сравнения также называют операциями отношения
(relational operators). Результатом любой операции сравнения яв-
ляется значение типа Boolean. Операции сравнения используются для сравнения значений любого сходного типа (табл. 1.4).
Таблица 1.4 –операции сравнения (Е в этой таблице - любое действительное выражение VBA)
Операция |
Синтаксис |
Наименование/описание |
(Оператор) |
||
= |
El = Е2 |
Равенство. True, если El равно Е2, |
|
|
иначе – False |
< |
El < Е2 |
Меньше, чем. True, если El меньше, |
|
|
чем Е2, иначе – False |
<= |
El < Е2 |
Меньше, чем или равно. True, если Е1 |
|
|
меньше или равно Е2, иначе – False |
<> |
<> |
Не равно. True, если Е1 не равно Е2, |
|
|
иначе – False |
> |
> |
Больше, чем. True, если Е1 больше, чем |
|
|
Е2, иначе – False |
>= |
>= |
Больше, чем или равно. True, если Е1 |
|
|
больше или равно Е2, иначе – False |
|
|
33 |
Конкатенация строк
Присоединение одной строки к другой называется конкатенацией (concatenation) строк. Знак « & » можно использовать только для конкатенации строк. Общий синтаксис знака & такой:
Operand1 & Operand2 [& Operand3…]
Operand1 и Operand2 – любые допустимые строковые или численные выражения. VBA преобразует числа в строки перед выполнением операции конкатенации. Тип данных результата конкатенации строк – это всегда тип String.
Логические операторы
Чаще всего логические операторы VBA используются для объединения результатов отдельных выражений сравнения, чтобы создать сложные критерии для принятия решений в процедуре, или для создания условий, при которых группа операторов должна повторяться (табл. 1.5).
Таблица 1.5 – Логические операторы (Е в этой таблице представляет собой любое допустимое выражение с результатом типа Boolean, такое как операция сравнения)
Оператор |
Синтаксис |
Имя/Описание |
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. |
|
|
34 |
Приоритеты выполнения операций при вычислении сложных выражений
Сложное (составное) выражение (complex expression) – это любое выражение, образованное из двух или более выражений. Многие из записываемых вами выражений – это сложные выражения, особенно, если они определяют управление последовательностью выполнения кода в процедурах или представляют различные математические формулы (табл. 1.6).
Таблица 1.6 – Иерархия операторов/операций от наивысшего до самого низкого приоритета.
Оператор |
Комментарии |
знак |
|
^ |
Возведение в степень, наивысший |
– |
Унарный — |
*, / |
Умножение и деление имеют равные приоритеты; |
|
они вычисляются по мере появления в выражении |
\ |
Деление нацело |
Mod |
Остаток от деления нацело |
+, – |
Сложение и вычитание имеют равный приоритет; |
|
они вычисляются по мере появления в выражении |
& |
Всякая конкатенация строк выполняется после лю- |
|
бых арифметических операций в выражении и перед |
|
любыми операциями сравнения или логическими |
<, <=, >, >=, |
Все операторы сравнения имеют равные приоритеты |
Like, =, <>, Is |
и вычисляются по мере появления в выражении сле- |
ва направо. Используйте круглые скобки для груп- |
|
Логические |
Not And Or Xor Eqv Imp |
операторы |
|
Использование функций Visual Basic
Функция (Function) – это встроенная формула, выполняющая действия над выражениями и генерирующая значение. Функция всегда возвращает значение, которое VBA вставляет в программу в том месте, где появляется имя функции. Функции VBA делятся на несколько групп в зависимости от типа операции или вычисления,
35
которое они выполняют. Вы уже пользовались функциями: InputBox и MsgBox - для ввода вывода данных. Не путайте термины функция и процедура. Обычно процедура выполняет определенную задачу (или группу задач) подобно тому, как определенная команда меню в Excel, Word или другом приложении выполняет конкретную задачу. Функция оперирует одним или более значениями и возвращает некоторое результирующее значение (как формула в ячейке рабочего листа Excel). Чтобы использовать функцию, просто вводите имя функции в оператор VBA вместе с любыми аргументами, которые требуются для этой функции, в том месте в операторе, где вам необходимо использовать результат функции. Размещение имени функции в операторе называют вызовом (calling) функции.
Встроенные функции VBA делятся на несколько категорий (математические, преобразования данных, даты и времени, строковые и прочие).
Математические функции
VBA предоставляет стандартный набор математических функций.
Таблица 1.7 – Математические функции (N означает любое численное выражение)
Функции |
Возвращает/действие |
|
|
(аргументы) |
|
Abs(N) |
Возвращает абсолютное значение N |
Cos(N) |
Косинус угла N, где N – это угол, измеренный в радиа- |
|
нах |
Sin(N) |
Возвращает синус угла; N – это угол, измеренный в ра- |
|
дианах |
Tan(N) |
Возвращает тангенс угла; N – угол в радианах |
Atn(N) |
Возвращает арктангенс N как угол в радианах |
36
Функции |
|
|
Возвращает/действие |
|
|
|
|
||
(аргументы) |
|
|
|
|
Exp(N) |
Возвращает константу е, возведенную в степень N е – |
|||
|
это основание натуральных логарифмов и она (при- |
|||
|
близительно) равна 2,718282 |
|||
Fix(N) |
Возвращает целую часть N. Fix не округляет число, а |
|||
|
отбрасывает любую дробную часть. Если N является |
|||
|
отрицательным, Fix возвращает ближайшее отрица- |
|||
|
тельное целое большее, чем или равное N |
|||
Int(N) |
Возвращает целую часть N. Int не округляет число, а |
|||
|
отбрасывает любую дробную часть. Если N является |
|||
|
отрицательным, Int возвращает ближайшее отрица- |
|||
|
тельное целое меньшее, чем или равное |
|||
Log(N) |
N Возвращает натуральный логарифм N |
|||
Rnd(N) |
Возвращает случайное число; аргумент является не- |
|||
|
обязательным. Используйте функцию Rnd только |
|||
|
после инициализации VBA-генератора случайных чи- |
|||
|
сел оператором Randomize |
|||
|
|
|
|
|
Sgn(N) |
Возвращает знак числа: –1, если N – отрицательное; 1, |
|||
|
если N –положительное; 0, если N равно 0 |
|||
Sqr(N) |
Возвращает корень квадратный из N. VBA отображает |
|||
ошибку исполнения, если N – отрицательное |
||||
|
||||
|
|
|
|
Функции преобразования данных
VBA содержит функции для преобразования одного типа данных в другой (табл. 1.8). Эти функции используются для устранения ошибок несовпадения типов, и обеспечения явного контроля за типами данных в выражениях.
37
Таблица 1.8 – Функции преобразования данных (N – это любое численное, S – любое строковое, а Е – выражение любого типа)
Функция |
Возвращает/действие |
(аргументы) |
|
|
|
Asc(S) |
Возвращает число кода символа, соответствующее |
|
первой букве строки S. Буква "А", например, имеет |
|
код символа 65 |
Chr(N) |
Возвращает строку из одного символа, соответст- |
|
вующего коду символа N, который должен быть чис- |
|
лом между 0 и 255, включительно. Код символа 65, |
|
например, возвращает букву "А" (Chr(13) – символ |
|
возврата каретки, Chr(10) – символ смещения на одну |
|
строку) |
Format(E, S) |
Возвращает строку, содержащую значение, представ- |
ленное выражением Е, в формате в соответствии с |
|
|
инструкциями, содержащимися в S |
Hex(N) |
Возвращает строку, содержащую шестнадцатиричное |
|
представление N |
|
|
Oct(N) |
Возвращает строку, содержащую восьмиричное |
|
представление N |
Str(N) |
Возвращает строку, эквивалентную численному вы- |
|
ражению N |
|
|
Val(S) |
Возвращает численное значение, соответствующее |
|
числу, представленному строкой S, которая должна |
|
содержать только цифры и одну десятичную точку, |
|
иначе VBA не может преобразовать ее в число. Если |
|
VBA не может преобразовать строку в S, то функция |
CBool(N) |
Возвращает Boolean-эквивалент численного выраже- |
|
ния N |
|
|
CCur(E) |
Возвращает численное значение типа Currency; E – |
|
любое допустимое численное или строковое выраже- |
|
ние, которое может быть преобразовано в число |
CStr(E) |
Возвращает значение типа String; E – любое допус- |
|
тимое численное или строковое выражение |
CVar(E) |
Возвращает значение типа Variant; E – любое допус- |
|
тимое численное или строковое выражение |
38
2. Практическая часть.
Задание 1. Напишите процедуру, выводящую сообщение даты вашего рождения (пример 1).
Задание 2. Модифицируйте процедуру HelloStudent (пример 2), используя явное определение переменной и свою Фамилию.
Задание 3. Составить процедуру для выполнения расчетов по формулам своего варианта из таблицы 1.9 (пример 4):
-для первой функции значения задавать в программе с помощью оператора присваивания;
-для второй функции значения задавать в диалоге с использованием функции InputBox.
|
|
Таблица 1.9 |
|
|
|
Ва- |
Функция |
Значения аргумента |
ри- |
|
|
ант |
|
|
|
|
|
1 |
Y = 2x + 5x - 3 |
-2,1; 1.5; 3.25 |
|
F=(x+1)2 + 3(x+1) |
-2; -1; 0 |
2 |
Y = tg (0,58x + 0,1) - x2 |
-2,1; 1,5; 3,25 |
|
F = (x+1)3 + 2(x+1) |
-2; -1; 0 |
3 |
Z = (log 2 (x+2))(x-1) - 1 |
-1,1; 0; 2,32 |
|
F=2(x+3)3 + 3(x+3) |
-2 ;-1 ;0 2 |
4 |
Q=(x-2)22x-1 |
-3,2; 2,1; 3,45 |
|
F=x2(x2+1) |
-2 ;-1 ; 0 |
5 |
R=x log3(x+1)-2 |
-0,5; 0; 2,34 |
|
F=4x2 + 2(x3+1)2 |
-2; -1; 0 |
6 |
L=(x-3)2 log0,5(x-2) + 1 |
2,5; 3; 4,15 |
|
F=3(x+1)2 + 2(x+1)3+2 |
-2; -1; 0 |
7 |
A=arctg x - 1/3x2 |
-1; -0,3; 3,12 |
|
F=x2 (x2 - 1) |
1; 0; 4 |
8 |
B=2arctgx-x+3 |
-1; -0,5; 2,25 |
|
F=x/2+(x/2)2 |
-2; 0; 2 |
39
Ва- |
|
|
|
|
|
|
|
|
|
|
|
Функция |
Значения аргумента |
|
ри- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ант |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
9 |
C=1+x+x2/2! +x3/3! |
-1,1; 0; 2,5 |
||||||||||||
|
F=(x+1)/5+(x+1)2 |
-4; -1; 4 |
||||||||||||
10 |
D=8,36 108+(1/(1-x)+1)cos2x |
-4,2; 0; 4,15 |
||||||||||||
|
F=x/3+(x/3)2 + 1 |
-6; 0; 6 |
||||||||||||
11 |
G=lg x2 - 7/(2x+6)2 |
-4,3; -1; 2,4 |
||||||||||||
|
F=2x3 - 3x2 + 3 |
-1; 0; 2 |
||||||||||||
12 |
K=ctgx - x2/2 |
-2,2; 0,1; 2,8 |
||||||||||||
|
F=x3 + 3x2 - 10 |
-1; 0; 1,5 |
||||||||||||
13 |
M= |
|
|
(1 + ex)1/x |
-2,1; 1,5; 2,3 |
|||||||||
|
F=2x3 + 9x2 - 21 |
-2; 0; 3 |
||||||||||||
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
0,23; 1,2; 2,4 |
N= 5 1 |
|
cos2 x |
||||||||||||
|
F=x3 + 3x2 - 2 |
-3; 0; 3 |
||||||||||||
15 |
|
e x |
|
|
|
|
|
|
|
|
|
0,3; 0,5;2,8 |
||
Q= |
|
|
|
x |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
4 x 3 |
|
|||||||||||
|
|
|
||||||||||||
|
F=(x+1)/3+2(x+1)2 |
-4; -1; 1 |
||||||||||||
16 |
U=tg2 (0,4x+0,4) - x3 |
-1,5; 0; 1,5 |
||||||||||||
|
F=x3 + 4x - 6 |
-3; 0; 3 |
||||||||||||
17 |
W=ctgx - 10e-x |
-2,1; 0,1; 2,7 |
||||||||||||
|
F=x3 + 2(x-1) + 4 |
-1; 0; 2 |
||||||||||||
18 |
Y=x22x - 4/3 |
-1,1; 0; 1,2 |
||||||||||||
|
F=(x2 + 1)/2+27/x2 |
-3; -1; 3 |
||||||||||||
19 |
A=sin(x-0,5) - x2 + 8/10 |
-2,3; 0; 0;5 |
||||||||||||
|
F=(x-2) 3 + (x+1)2 + 5 |
-1; 0; 2 |
||||||||||||
20 |
B=tg3x - x + 1/2 |
-1; 0; 2,19 |
||||||||||||
|
F=(x+1)3 + x2 - 3 |
-1; 0; 2 |
||||||||||||
21 |
C= |
|
|
|
|
21/x |
-2,35; 1,2; 2,73 |
|||||||
2 |
|
|||||||||||||
|
F=(x+1)2 + (x-2)2 + 5 |
-1; 2; 3 |
||||||||||||
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
-2,3; 1,2; 3,75 |
D= 5 |
|
x 3 |
|
|
x 2 4 / 3 |
|||||||||
|
|
|
|
|
2 |
|
|
|
|
|
|
|
-5; -4; 1 |
|
|
F=(x+4) + x/2 |
|
||||||||||||
23 |
E=5x + 6ln(x+1) - 3 |
-0,75; 1,2; 2,4 |
||||||||||||
|
F=x4 - x3 + 3x |
-2 ; 0; 2 |
||||||||||||
Ва- |
|
|
|
|
|
|
|
|
|
|
|
Функция |
Значения аргумента |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|