Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб_VBA

.pdf
Скачиваний:
57
Добавлен:
29.03.2016
Размер:
3.26 Mб
Скачать

меньшей точностью, чем фактический тип результата выражения, 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