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

Инф VBA

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

70

Символьные константы заключаются в двойные кавычки ("10 кг.").

Числовые константы:

-целые числа со знаком или без знака (-123);

-вещественные числа с десятичной точкой (12.452).

Отметим, что в электронных таблицах Excel ставится либо десятичная точка, либо десятичная запятая, что зависит от заданного формата ячеек. Кроме того, в VBA используются числа с плавающей десятичной точкой, которые являются аналогом математической записи чисел с мантиссой и порядком. Так,

числам в математике 52,759 104 и 2,137 10 9 соответствуют записи -

52.759E4 и 2.137E-9 . Число со знаком, стоящее до символа E, называется мантиссой, целое число со знаком, стоящее после символа E, называется порядком.

7.7 Оператор присваивания. Основные операции и стандартные

встроенные функции VBA.

Одной из основных операций в языках программирования является операция присваивания. С помощью операции присваивания записывают действия, которые позволяют изменять значения переменных. Синтаксис этой операции:

<имя переменной>=<выражение>

Знак «=» здесь читается «присвоить» (не путайте со знаком «равно»).

Суть этой операции заключается в том, что вычисляется результат выражения,

стоящего в правой части от знака «=», и этот результат записывается в ячейку памяти, обозначенную идентификатором переменной, стоящей слева от знака

«=». Поэтому операция X=X+1 означает, что к значению переменной X

прибавляется 1 и результат снова записывается в ячейку X, т.е. значение переменной X увеличилось на 1.

Для того чтобы правильно записывать выражения в программе,

необходимо знать некоторые правила записи выражений:

71

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

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

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

Табл. 4

Название операции

 

Обозначение

 

Пример

 

 

 

 

 

 

 

 

Возведение

в

^

 

X2 → X^2

степень

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Остаток от деления

 

X mod Y

 

9 mod 4

(только для данных

где X – делимое,

 

 

 

 

целого типа)

 

Y – делитель

Ответ: 1

 

 

 

 

 

 

 

 

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

 

 

X \ Y

9 \ 4

 

деление

 

X – делимое целого типа,

Ответ: 2

 

 

Y – делитель целого типа

 

 

 

 

 

 

 

 

 

 

 

 

Умножение,

 

*, /

 

7*X+Y/5

деление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сложение,

 

+, -

 

X+Y-5

вычитание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример. Записать оператор для вычисления y по формуле: y

x 4k

.

 

 

 

 

 

 

 

5x

Оператор присваивания записывается следующим образом:

 

 

 

 

 

 

 

 

 

 

 

y=(x+4*k)/(5*x)

 

 

 

 

72

Любой язык программирования имеет определенный набор стандартных

встроенных функций. Ниже в таблице представлены основные числовые функции.

Табл. 5

Обозначение функции

Назначение функции

 

 

 

 

 

 

 

 

 

 

 

 

 

ABS(X)

Абсолютная величина числа

 

 

 

 

 

 

 

 

 

 

 

 

 

ATN (X)

Арктангенс

 

 

 

 

 

 

 

 

 

 

 

 

 

COS(X)

Косинус, где X – угол в радианах

 

 

 

 

 

 

 

 

 

 

 

 

 

EXP(X)

Экспоненциальная функция, где e=2.71828

 

 

 

 

 

 

 

 

 

 

 

 

 

FIX(X)

Целая часть аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

INT(X)

Максимальное целое число, не превышающее Х

 

 

 

 

 

 

 

 

 

 

LOG(X)

Натуральный логарифм, где X – положительное

 

 

число

 

 

 

 

 

 

 

 

 

 

 

 

 

RND(X)

Формирование случайного числа

 

 

 

 

 

 

 

 

 

 

 

 

 

SGN(X)

Определяет знак аргумента, возвращает:

 

 

 

 

 

+1 при X>0,

 

 

 

 

 

0 при X=0,

 

 

 

 

 

-1 при X<0

 

 

 

 

 

 

 

 

 

 

 

 

 

SIN(X)

Синус, где X – угол в радианах

 

 

 

 

 

 

 

 

 

 

 

 

 

SQR(X)

Корень квадратный из X, где X – положительное

 

 

число

 

 

 

 

 

 

 

 

 

 

 

 

 

TAN(Х)

Тангенс, где X – угол в радианах

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример. Оператор присваивания для вычисления функции y

 

x5 ex

 

 

 

 

 

 

 

cos(3x)

 

 

 

 

 

 

 

 

будет выглядеть следующим образом:

 

 

 

 

 

 

 

 

 

 

y=SQR(ABS((x^5+EXP(x))/COS(x)))

 

 

 

 

 

 

 

 

 

 

 

 

 

73

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

вычислены по формуле

 

log

 

 

x

ln x

. Из обратных

тригонометрических

a

 

 

 

 

 

 

 

 

ln a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

функций взят только арктангенс,

так как для положительных х справедливы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

формулы: arcsin x arctg

 

 

 

x

 

 

 

 

 

 

 

1 x2

 

1

 

 

 

 

 

 

 

 

,

arccosx arctg

 

 

 

, arcctg x arctg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 x2

x

 

 

 

 

 

 

 

 

x

 

Функции преобразования типов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табл. 6

 

 

 

 

 

 

 

 

 

 

Обозначение функции

 

Назначение функции

 

 

 

 

 

 

 

 

 

 

 

Val(Строка)

 

Преобразует строку цифровых символов в число

 

 

 

 

 

CStr(Число)

 

Преобразует числовое выражение или строку в

 

 

 

 

строку

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CInt(Выражение)

 

Преобразует числовое выражение или строку в

 

 

 

 

число типа Integer

 

 

 

 

 

 

 

 

 

 

 

Cvar(Выражение)

 

Преобразует числовое выражение или строку в

 

 

 

 

число типа Variant и др.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

В отличие от математических операций, результатом выполнения которых может быть любое значение, операция отношения может иметь только два результирующих значения — True (Истина) и False (Ложь), которые могут быть присвоены переменным типа Boolean или определенному свойству объекта. Операции отношения применяются для записи выражений условия.

Основные операции отношения приведены в таблице:

Табл. 7

Операция

Описание

[Операнд1] = [ Операнд2] Равно. Результат – True, если первый операнд равен второму.

 

74

 

 

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

Не равно. Результат – True, если первый

 

операнд не равен второму.

 

 

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

Больше. Результат – True, если первый

 

операнд больше второго.

 

 

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

Меньше. Результат – True, если первый

 

операнд меньше второго.

 

 

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

Больше или равно. Результат – True, если

 

первый операнд больше или равен второму.

 

 

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

Меньше или равно. Результат – True, если

 

первый операнд меньше или равен второму.

 

 

[Строка] Like [Маска]

Соответствие маске. Результат – True, если

 

строка соответствует маске.

 

 

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

Ссылка на объект. Результат – True, если обе

 

переменные ссылаются на один и тот же объект.

 

 

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

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

 

Табл. 8

 

 

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

Действие

 

 

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

Если связываемые условия имеют значение

 

True, то результирующее значение также

 

будет True (логическое произведение)

 

 

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

Если одно из связываемых условий будет

 

иметь значение True, то результирующим

 

значением также будет True (логическая

 

сумма)

 

 

Not [Операнд]

Если условие имеет значение True, то

 

 

75

результирующим значением будет False. Если условие имеет значение False, то результирующее значение будет True

(отрицание).

[Операнд1] Xor [Операнд2 ] Если только одно из связываемых условий имеет значение True, то результирующее значение так же будет True. Если оба условия имею одинаковые значения, то результирующее значение будет False.

Операции для работы со строками

В Visual Basic есть только одна операция для работы со строками — это операция конкатенации & (знак ампресант). При конкатенации строк значение второй строки добавляется в конец первой строки. Результатом операции является более длинная строка, оставленная из исходных строк. Объединение строк может быть также выполнено с помощью операции сложения (знак операции «+»).

Пример. Stroka = "Студент" & "1 курса" — объединяются две неименованные строковые константы.

Функции обработки строк.

 

Табл. 9

 

 

Обозначение функций

Назначение функции

 

 

Len(Строка$)

Возвращает длину Строки$

 

 

Asc(Строковое выражение)

Возвращает ASCII код первого символа в

 

строковом выражении

 

 

Chr(asciiКодСимвола)

Возвращает символ, соответствующий

 

указанному коду ASCII

 

 

76

Mid(Строка$, Позиция& [, Длина&]) В Строке$ выделяется подстрока начиная с заданной Позиции& длины Длина$ (Длина$ -

необязательный аргумент)

Left(Строка$, Длина&) В Строке$ выделяется левая подстрока

Длиной&

Right(Строка$, Длина&) В Строке$ выделяется правая подстрока

Длиной& и др.

7.8 Программирование разветвляющихся процессов

Разветвляющиеся алгоритмы реализуются в программе с помощью оператора условия If … Then и переключателя, реализуемого оператором

Select Case.

Полный оператор условного перехода. Этот оператор используется для реализации в программе алгоритма типа «Разветвление»

В общем виде формат этого оператора:

IF <условие> THEN

< оператор 1>

ELSE

<оператор 2>

END IF

Неполный оператор условного перехода. Этот оператор используется в программе для реализации алгоритма типа «Обход».

Структура оператора:

IF <условие> THEN

< оператор 1>

END IF

Оператор IF может использоваться для создания так называемых многоуровневых проверок: когда одна из ветвей разветвления в свою очередь

77

также имеет разветвление. Такая конструкция называется «вложенные операторы IF»:

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

IF <условие 1> THEN

<Оператор 1>

ELSEIF <условие 2> THEN

<Оператор 2>

ELSE

<Оператор 3>

END IF

В этом случае для оператора ELSEIF не ставится в соответствие END IF.

Для реализации множественного выбора в VBA используется

переключатель.

Формат оператора в общем виде:

SELECT CASE <переключатель>

CASE <условие 1> <оператор 1>

CASE < условие 2> <оператор 2>

. . .

[CASE ELSE

<блок операторов n>]

END SELECT

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

чтобы условия не «перекрывали» друг друга. Например, если первым поставить условие x>0, а затем x>5, то первое условие «перекроет» второе (и до второго

78

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

как выражения или константы через запятую;

задать границы диапазона: <нач. значение> TO <конеч. значение>

через операцию отношения: IS <знак операции> <выражение>

Пример:

SELECT CASE x

CASE 1, 3, 5 y=x^2-1

CASE 6 TO 15, 20 y=x+3

CASE 23, IS >= 30 y=3*x

CASE ELSE y=2*x+1

END SELECT

7.9 Программирование циклических процессов

Для реализации цикла со счетчиком используется оператор FOR.

Общий формат оператора:

FOR <счетчик цикла> =<нач. знач> TO <конеч. знач> [STEP <шаг>] <оператор 1>

. . .

<оператор n>

NEXT [<счетчик цикла>]

Где <счетчик цикла> – это числовая переменная. В начале выполнения цикла она принимает значение, задаваемое выражением <нач. знач>;

79

<оператор 1> . . . <оператор n> составляют тело цикла;

<шаг> определяет значение, на которое будет изменяться счетчик цикла при выполнении каждого шага цикла. Шаг изменения счетчика цикла может быть любым положительным или отрицательным числом, а также выражением.

Если шаг больше 0, то цикл завершится когда <счетчик цикла> станет больше

<конеч. знач>. Если шаг меньше 0, то цикл завершится когда <счетчик цикла>

станет меньше <конеч. знач>.Если шаг не указан, то он автоматически полагается равным 1.

Чтобы прервать цикл до его завершения и передать управление первому оператору, следующему за NEXT, используют оператор EXIT FOR.

Операторы циклов с предусловием

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

истинно.

DO WHILE <условие работы цикла>

<оператор 1>

. . .

<оператор n>

LOOP

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

ложно.

DO UNTIL <условие выхода из цикла>

<оператор 1>

. . .

<оператор n>

LOOP

Чтобы прервать цикл до его завершения и передать управление первому оператору, следующему за LOOP, используют оператор EXIT DO.