• Методические указания и задания. Строковые операторы VBA и операторы сравнения Vba отрицание

    Логические операторы VBA используются для объединения результатов отдельных логических выражений, чтобы создать сложные критерии для принятия решений в процедуре (таблица Б.3).

    Таблица Б.3 – Логические операторы VBA

    Логический

    Синтаксис

    Имя/Описание

    оператор

    El And E2

    Конъюнкция . True, если оба Е1 и Е2

    имеют значение True, иначе – False

    El Or E2

    Дизъюнкция . True, если одно выра-

    жение или оба (Е1 и Е2) являются

    равными True; иначе – False

    Not El

    Отрицание . True, если Е1 имеет зна-

    чение False; False, если El является

    равным True

    El Xor E2

    Исключение . True, если Е1 и Е2

    имеют разные значения; иначе –

    El Eqv E2

    Эквивалентность . True,если Е1 име-

    ет то же самое значение, что и Е2;

    иначе – False

    El Imp E2

    Импликация . False, когда Е1 является

    равным True и Е2 равно False; иначе

    True.

    Операнды Е в этой таблице представляет собой любое допустимое выражение с результатом типа Boolean, такое как операция сравнения.

    Приоритеты выполнения операций при вычислении сложных выражений

    Сложное (составное) выражение (complex expression) – это любое выражение, образованное из двух или более выражений. В таблице Б.4 собраны операции по группам в порядке убывания приоритета, то есть чем ниже расположена группа, тем позже выполняются указанные в ней операции. Для изменения этого порядка применяются круглые скобки. Операции одного уровня выполняются слева направо в том порядке, в котором они записаны в выражении.

    Таблица Б.4 – Приоритеты операций VBA

    Оператор

    Комментарии

    Возведение в степень, наивысший приоритет

    Унарный минус - изменение знака числа

    Умножение и деление имеют равные приоритеты; они вы-

    Деление нацело

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

    Сложение и вычитание имеют равный приоритет; они вы-

    числяются по мере появления в выражении слева направо

    Всякая конкатенация строк выполняется после любых

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

    операциями сравнения или логическими операциями

    <, <=, >, >=,

    Все операторы сравнения имеют равные приоритеты и вы-

    числяются по мере появления в выражении слева направо.

    Используйте круглые скобки для группирования операто-

    ров сравнения в выражениях

    Логические

    Not And Or Xor Eqv Im p – имеют низший приоритет

    операторы

    Приложение В Математические функции VBA

    VBA предоставляет стандартный набор математических функций приведенный в таблице В.1.

    Таблица B.1 – Математические функции VBA

    Возвращает / действие

    Возвращает абсолютное значение N

    Косинус угла N, где N – это угол, измеренный в ра-

    Возвращает синус угла; N – это угол, измеренный в

    радианах

    Возвращает тангенс угла; N – угол в радианах

    Возвращает арктангенс N как угол в радианах

    Возвращает константу е, возведенную в степень N (е –

    это основание натуральных логарифмов и она (при-

    близительно) равна 2,718282

    Возвращает целую часть N. Fix не округляет число, а

    отрицательным, Fix возвращает ближайшее отрица-

    тельное целое большее, чем или равное N

    Возвращает целую часть N. Int не округляет число, а

    отбрасывает любую дробную часть. Если N является

    отрицательным, Int возвращает ближайшее отрица-

    тельное целое меньшее, чем или равное N

    Возвращает натуральный логарифм N

    Возвращает случайное число; аргумент является не-

    обязательным. Используйте функцию Rnd только

    после инициализации VBA-генератора случайных чи-

    сел оператором Randomize

    Возвращает знак числа: –1, если N – отрицательное;

    1, если N –положительное; 0, если N равно 0

    Возвращает корень квадратный из N. VBA отображает

    ошибку исполнения, если N – отрицательное

    Операнд N означает любое численное выражение? допустимое в

    Аргумент тригонометрических функции (синуса, косинуса и тангенса) задается в радианах, а не в градусах. Обратная тригонометрическая функция A t n (x ) возвращает в программу значение угла в радианах от -π/2 до π/2, тангенс которого равен значению арифметического выражения х .

    Связь между радианной и градусной мерами угла выражается через иррациональное число π ≈ 3,14159265358979323846.

    Радианы=

    Градусы× π

    Градусы=

    Радианы× 180

    Для перевода градусов в радианы можно также использовать встроенную функцию Excel - Application.Radians(x ), где x – угол, за-

    данный в радианах.

    Для получения числового значения константы π с точностью 15 цифр мантиссы можно использовать встроенную функцию Excel Application.Pi(), либо функцию VBA арктангенс

    Pi= Application.Pi() либо Pi=4*Atn(1)

    Примеры записи тригонометрических функций

    При написании кода VBA в Excel набор встроенных операторов используют на каждом шагу. Эти операторы делятся на математические, строковые, операторы сравнения и логические. Далее мы подробно рассмотрим каждую группу операторов.

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

    Основные математические операторы VBA перечислены в таблице ниже.

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

    Строковые операторы

    Основной строковый оператор в Excel VBA – это оператор конкатенации & (слияние):

    Операторы сравнения

    Операторы сравнения используются для сравнения двух чисел или строк и возвращают логическое значение типа Boolean (True или False). Основные операторы сравнения Excel VBA перечислены в этой таблице:

    Логические операторы

    Логические операторы, как и операторы сравнения, возвращают логическое значение типа Boolean (True или False). Основные логические операторы Excel VBA перечислены в таблице ниже:

    В приведённой выше таблице перечислены не все логические операторы, доступные в VBA. Полный список логических операторов можно найти на сайте Visual Basic Developer Center .

    Встроенные функции

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

    Функция Действие
    Abs Возвращает абсолютную величину заданного числа.
    • Abs(-20) возвращает значение 20;
    • Abs(20) возвращает значение 20.
    Chr Возвращает символ ANSI, соответствующий числовому значению параметра.
    • Chr(10) возвращает перенос строки;
    • Chr(97) возвращает символ a .
    Date Возвращает текущую системную дату.
    DateAdd Добавляет определённый временной интервал к заданной дате. Синтаксис функции:

    DateAdd(интервал , число , дата )

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

    Аргумент интервал может принимать одно из следующих значений:

    • DateAdd(“d”, 32, “01/01/2015”) добавляет 32 дня к дате 01/01/2015 и, таким образом, возвращает дату 02/02/2015.
    • DateAdd(“ww”, 36, “01/01/2015”) добавляет 36 недель к дате 01/01/2015 и возвращает дату 09/09/2015.
    DateDiff Вычисляет количество определённых временных интервалов между двумя заданными датами.
    • DateDiff(“d”, “01/01/2015”, “02/02/2015”) вычисляет количество дней между датами 01/01/2015 и 02/02/2015, возвращает результат 32.
    • DateDiff(“ww”, “01/01/2015”, “03/03/2016”) вычисляет количество недель между датами 01/01/2015 и 03/03/2016, возвращает результат 61.
    Day Возвращает целое число, соответствующее дню месяца в заданной дате.

    Пример: Day(“29/01/2015”) возвращает число 29.

    Hour Возвращает целое число, соответствующее количеству часов в заданном времени.

    Пример: Hour(“22:45:00”) возвращает число 22.

    InStr Принимает в качестве аргументов целое число и две строки. Возвращает позицию вхождения второй строки внутри первой, начиная поиск с позиции, заданной целым числом.
    • InStr(1, “Вот искомое слово”, “слово”) возвращает число 13.
    • InStr(14, “Вот искомое слово, а вот еще искомое слово”, “слово”) возвращает число 38.

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

    Int Возвращает целую часть заданного числа.

    Пример: Int(5.79) возвращает результат 5.

    Isdate Возвращает True , если заданное значение является датой, или False – если датой не является.
    • IsDate(“01/01/2015”) возвращает True ;
    • IsDate(100) возвращает False .
    IsError Возвращает True , если заданное значение является ошибкой, или False – если ошибкой не является.
    IsMissing В качестве аргумента функции передаётся имя необязательного аргумента процедуры. IsMissing возвращает True , если для рассматриваемого аргумента процедуры не передано значение.
    IsNumeric Возвращает True , если заданное значение может быть рассмотрено как число, в противном случае возвращает False .
    Left Возвращает заданное количество символов от начала переданной строки. Синтаксис функции вот такой:

    Left(строка , длина )

    где строка – это исходная строка, а длина – количество возвращаемых символов, считая от начала строки.

    • Left(“абвгдежзиклмн”, 4) возвращает строку “абвг”;
    • Left(“абвгдежзиклмн”, 1) возвращает строку “а”.
    Len Возвращает количество символов в строке.

    Пример: Len(“абвгдеж”) возвращает число 7.

    Month Возвращает целое число, соответствующее месяцу в заданной дате.

    Пример: Month(“29/01/2015”) возвращает значение 1.

    Mid Возвращает заданное количество символов из середины переданной строки. Синтаксис функции:

    Mid(строка , начало , длина )

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

    • Mid(“абвгдежзиклмн”, 4, 5) возвращает строку “гдежз”;
    • Mid(“абвгдежзиклмн”, 10, 2) возвращает строку “кл”.
    Minute Возвращает целое число, соответствующее количеству минут в заданном времени.Пример: Minute(“22:45:15”) возвращает значение 45.
    Now Возвращает текущую системную дату и время.
    Right Возвращает заданное количество символов от конца переданной строки. Синтаксис функции:

    Right(строка , длина )

    Где строка – это исходная строка, а длина – это количество символов, которые надо извлечь, считая от конца заданной строки.

    • Right(“абвгдежзиклмн”, 4) возвращает строку “клмн”;
    • Right(“абвгдежзиклмн”, 1) возвращает строку “н”.
    Second Возвращает целое число, соответствующее количеству секунд в заданном времени.

    Пример: Second(“22:45:15”) возвращает значение 15.

    Sqr Возвращает квадратный корень числовой величины, переданной в аргументе.
    • Sqr(4) возвращает значение 2;
    • Sqr(16) возвращает значение 4.
    Time Возвращает текущее системное время.
    Ubound Возвращает верхний индекс измерения заданного массива.

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

    Здесь подробно описаны все арифметические операторы, операторы сравнения, логические, а также операторы конкатенации. Я попытался собрать всё то, что необходимо знать об этих операторах. Каждый оператор снабжён примером. Описания переведены мной со стандартного Help"a VB5.

    Арифметические операторы

    оператор ^ (возведение в степень)

    Этот оператор предназначен для возведения числа в степень.

    Синтаксис:

    результат = число ^ степень

    Параметры:

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

    Замечания :

    число может быть отрицательное, только в том случае, когда степень - целое число. Если в одном выражении используется несколько операторов ^, то вычисление происходит слева направо. Обычно тип результата - Double. Однако, если или степень , или число - Null выражение, то результат тоже Null.

    Пример:

    Dim MyValue
    MyValue = 2 ^ 2 " Возвратит 4.
    MyValue = 2 ^ 3 ^ 3 " Возвратит 512 (2^3=8, 8^3=512)
    MyValue = (-5) ^ 3 " Возвратит -125.

    Советы:

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

    test1 = 2 ^ 8 " 893мс
    test1 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 " 130мс!

    оператор * (умножение)

    Используется для перемножения двух чисел.

    Синтаксис:

    результат = число1 * число2

    Параметры:

    результат - обязателен; любая числовая переменная
    число1 - обязательно; любое числовое выражение
    число2 - обязательно; любое числовое выражение

    Замечания:

    Тип данных результата обычно такой же, как и самый точный тип из двух чисел. Порядок точности, от большего к меньшему - Byte, Integer, Long, Single, Currency, Double, Decimal. Правда, есть исключения:

    • Если перемножаются Single и Long, то результат - Double
    • Если тип данных результата - Long Single или Date, в который не помещается сам результат выражения, то результат конвертируется в Variant, содержащий Double.

    Если число1 или число2

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

    Пример:

    Dim MyValue
    MyValue = 2 * 2 " Возвратит 4.
    MyValue = 459.35 * MyValue " Возвратит 495.35 * 4

    оператор / (деление)

    Используется для деления двух чисел и получить результат с плавающей точкой.

    Синтаксис:

    результат = число1 / число2

    Параметры:

    результат - обязателен; любая числовая переменная
    число1 - обязательно; любое числовое выражение
    число2 - обязательно; любое числовое выражение

    Замечания:

    Результат обычно имеет тип Double. Правда, есть исключения:

    • Если оба выражения выражения имеют тип Byte, Integer, Single, то результат Single. Однако, если размеры выражения не вписываются в рамки Single, происходит ошибка.
    • Если оба выражения выражения имеют тип Variant, содержащий Byte, Integer или Single, то результат Single Variant. Однако, если размеры выражения не вписываются в рамки Single, то Double Variant.
    • Если одно из чисел имеет тип Decimal, то и результат - Decimal.

    Если число1 или число2 - Null, то оно интерпретируется просто как обычный 0.

    Примеры:

    Dim MyValue
    MyValue = 10 / 4 " Возвратит 2.5.
    MyValue = 10 / 3 " Возвратит 3.333333.

    оператор \ (целочисленное деление)

    Используется для деления двух чисел и получить целочисленный результат.

    Синтаксис:

    результат = число1 \ число2

    Параметры:

    результат - обязателен; любая числовая переменная
    число1 - обязательно; любое числовое выражение
    число2 - обязательно; любое числовое выражение

    Замечания:

    Перед тем, как происходит такое деление, выражения округляются до Byte, Integer или Long выражений. Обычно тип данных результата Byte, Byte variant, Integer, Integer variant, Long, or Long variant. Любая дробная часть обрезается.

    Однако, если любое из выражений Null, то и результат Null. Любое выражение, содержащее Empty интерпретируется как 0.

    Примеры:

    Dim MyValue
    MyValue = 11 \ 4 " Возвратит 2.
    MyValue = 9 \ 3 " Возвратит 3.
    MyValue = 100 \ 3 " Возвратит 33.

    оператор Mod (остаток от деления)

    Используется для деления двух чисел и получение остатка от их деления.

    Синтаксис:

    результат = число1 Mod число2

    Параметры:

    результат - обязателен; любая числовая переменная
    число1 - обязательно; любое числовое выражение
    число2 - обязательно; любое числовое выражение

    Замечания:

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

    A = 19 Mod 6.7

    Что здесь происходит? Сначала округляется число 6.7 до 7. Затем происходит деление, получаем 2.7.... Остаток от деления = 5. (2 * 7 = 14, 19 - 14 = 5).

    Результат обычно имеет тип Byte, Byte variant, Integer, Integer variant, Long, или Variant содержащий Long.

    Если любое из выражений Null, то и результат Null. Любое выражение, содержащее Empty интерпретируется как 0.

    Примеры:

    Dim MyResult
    MyResult = 10 Mod 5 " Возвратит 0.
    MyResult = 10 Mod 3 " Возвратит 1.
    MyResult = 12 Mod 4.3 " Возвратит 0.
    MyResult = 12.6 Mod 5 " Возвратит 3.

    оператор + (сложение)

    Используется для сложения двух чисел.

    Синтаксис:

    результат = выражение1 + выражение2

    Параметры:

    результат - обязателен; любая числовая переменная
    выражение1
    выражение2 - обязательно; любое выражение

    Замечания:

    Когда вы используете оператор +, вы не можете определить что произойдёт, сложение или конкатенация строк. Для конкатенации используйте оператор &, чтобы избежать недоразумений и сделать код более читабельным.

    Если одно из выражений не Variant, то применяются следующие правила:

    • Если оба выражения имеют численный тип (Byte, Boolean, Integer, Long, Single, Double, Date, Currency, или Decimal) - то происходит их сложение.
    • Если оба выражения строки - конкатенация.
    • Если одно из выражений имеет численный тип, а другое любое Variant значение, включая Null, то происходит сложение.
    • Если одно из выражений строка, а другое любое Variant значение, то происходит конкатенация.
    • Если одно из выражений содержит Empty, то возвращается второе, не изменённое выражение.
    • Если одно из выражений имеет численный тип, а другое - строка, происходит ошибка несовпадения типов (Type mismatch).
    • Если любое выражение Null - тогда и результат тоже Null.

    Если оба выражения Variant, то применяются следующие правила:

    • Если оба выражения числа - то они складываются.
    • Если оба выражения строки - то они конкатенируются.
    • Если одно из выражений число, а другое строка - происходит сложение.

    Для обычного сложения тип данных результата обычно такой же, как и самый точный тип из двух чисел. Порядок точности следующий - Byte, Integer, Long, Single, Double, Currency, и Decimal. Есть исключения:

    • Если складываются Single и Long, то результат - Double
    • Если складываются выражение с типом Date, с любым другим выражением, то результат - Date.

    Если одно или оба выражения Null, то результат тоже Null. Если оба из выражений содержат Empty, результат Integer. Если только одно, то в качестве результата возвращается не изменённое второе выражение.

    Примеры:

    Dim MyNumber, Var1, Var2
    MyNumber = 2 + 2 " Возвратит 4.
    MyNumber = 4257.04 + 98112 " Возвратит 102369.04.

    Var1 = "34"
    Var2 = 6 " Инициализируем смешанные переменные
    MyNumber = Var1 + Var2 " Возвратит 40.

    Var1 = "34"
    Var2 = "6" " Инициализируем переменные со строками
    MyNumber = Var1 + Var2 " Возвратит "346" (произошла
    " конкатенация, а не сложение!).

    Советы:

    Оператор сложение (+) можно использовать для сложения дат, т.е. переменных типа Date:

    Dim d As Date
    d = DateSerial(2002, 8, 15) " иниализация даты 15.08.2002
    d = d + 15 " теперь d содержит дату 30.08.2002
    " т.е. мы прибавили 15 дней

    оператор - (вычитание, смена знака)

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

    Синтаксис:

    результат = выражение1 - выражение2

    -выражение

    Параметры:

    результат - обязателен; любая числовая переменная
    выражение - обязательно; любое выражение
    выражение1 - обязательно; любое выражение
    выражение2 - обязательно; любое выражение

    Замечания :

    В первом синтаксисе, оператор "-" необходим для нахождения разницы между двумя числами. Во втором синтаксисе, "-" используется для смены знака у выражения .

    Тип данных результата обычно такой же, как и самый точный тип из двух чисел. Порядок точности следующий - Byte, Integer, Long, Single, Double, Currency, и Decimal. Есть исключения:

    • Если в вычитании участвуют типы Single и Long, то результат - Double
    • Если в вычитании используется выражение с типом Date,
      то результат - Date.
    • Вычитание двух дат, даёт в результате Double.

    Если одно или оба выражения Null, то результат тоже Null. Если одно из выражений Empty, то оно интерпретируется как 0.

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

    Примеры:

    Dim MyResult
    MyResult = 4 - 2 " Возвратит 2.
    MyResult = 459.35 - 334.90 " Возвратит 124.45.

    Советы:

    Как и оператор сложение, оператор вычитание может быть применён для вычисления разницы (в днях) между двумя датами:

    Dim d1 As Date
    Dim d2 As Date
    Dim razn As Long
    d1 = DateSerial(1983, 10, 14)
    d2 = DateSerial(2002, 8, 15)
    razn = d2 - d1 " разница в днях (6880).

    Операторы сравнения

    Используются для сравнения некоторых выражений. Имеют 3 синтаксиса:

    Синтаксис:

    результат = выражение1 операторсравнения выражение2
    результат = объект1 Is объект2
    результат = строка Like образец

    Параметры:

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

    Замечания:

    Следующая таблица содержит список операторов сравнения и условия, по которым определяется результат выражения (True или False).

    Оператор

    True, если

    False, если

    Null, если

    < (меньше чем) выражение1 <
    выражение2
    выражение1 >=
    выражение2

    одно
    из
    выражений содержит Null

    <= (меньше или равно) выражение1 <=
    выражение2
    выражение1 >
    выражение2
    > (больше чем) выражение1 >
    выражение2
    выражение1 <=
    выражение2
    >= (больше или равно) выражение1 >=
    выражение2
    выражение1 <
    выражение2
    = (равно) выражение1 =
    выражение2
    выражение1 <>
    выражение2
    <> (не равно) выражение1 <>
    выражение2
    выражение1 =
    выражение2

    Операторы Is и Like выполняют специфические функции, и их таблица сравнения отличается от приведённой (их мы рассмотрим ниже).

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

    • Если оба выражения числа (Byte, Boolean, Integer, Long, Single, Double, Date, Currency, или Decimal), то происходит сравнение чисел.
    • Если оба выражения строки, то происходит сравнение строк. (меньшая строка та, первая и последующие буквы которой имею меньший ascii код).
    • Если одно из выражений число, а другое Variant, который может быть трактован как число, то происходит сравнение чисел.
    • Если одно из выражений число, а другое Variant строка, которая не может быть трактована как число, то происходит ошибка (Type mismatch).
    • Если одно из выражений строка, а другое любое Variant значение (даже Null), то происходит строковое сравнение.
    • Если одно из выражений Empty, а другое число, то происходит сравнение чисел, где Empty рассматривается как 0.
    • Если одно из выражений Empty, а другое строка, то происходит сравнение строк, где Empty рассматривается как пустая строка "".

    Если и первое выражение и второе имеют тип Variant, то выражения сравниваются, согласно тем типам данных, которые содержит Variant:

    • Если оба Variant выражения содержат числа, то происходит сравнение чисел.
    • Если оба Variant выражения содержат строки, то происходит сравнение строк.
    • Если одно из Variant выражений содержит число, а другое строку, то числовое выражение меньше строкового.
    • Если одно из Variant выражений Empty, а другое число, то Empty рассматривается как 0.
    • Если одно из Variant выражений Empty, а другое строка, то Empty рассматривается как пустая строка "".
    • Если оба выражения Empty, то они рассматриваются как равные.

    Когда Single переменная сравнивается с Double, то Double округляется до точности Single.

    Если Currency сравнивается с Single или Double, то Single или Double конвертируются в Currency. Точно так же, при сравнении Decimal с Single или Double, то Single или Double конвертируются в Decimal. Для Currency любая дробная часть меньшая, чем.0001, может быть утеряна. Для Decimal это значение 1E-28, или может произойти ошибка. Таким образом, при потере дробной части, выражения могут интерпретироваться как равные, хотя на самом деле, одно от другого будет отличаться. (хоть и на маленькое значение).

    Примеры:

    Dim MyResult, Var1, Var2
    MyResult = (45 < 35) " Возвратит False.
    MyResult = (45 = 45) " Возвратит True.
    MyResult = (4 <> 3) " Возвратит True.
    MyResult = ("5" > "4") " Возвратит True.

    Var1 = "5": Var2 = 4 " в VB можно использовать двоеточие,
    " для разделения операторов.

    MyResult = (Var1 > Var2) " Возвратит True.

    Var1 = 5: Var2 = Empty
    MyResult = (Var1 > Var2) " Возвратит True.

    Var1 = 0: Var2 = Empty
    MyResult = (Var1 = Var2) " Возвратит True.

    оператор сравнения Is

    Этот оператор используется для сравнения объктных переменных.

    Синтаксис этого оператора приведён выше.

    Замечания:

    Если объект1 и объект1 ссылаются на один и тот же объект, то результат - True, если нет, то False. Две переменные могут ссылается на один и тот же объект несколькими путями. В следующем примере, A ссылается на тот же объект, что и B:

    Set A = B

    Следующий пример делает так, что переменные A и B ссылаются на один и тот же объект - C:

    Set A = C
    Set B = C

    Примеры:

    Dim MyObject, YourObject, ThisObject, _
    OtherObject, ThatObject, MyCheck

    Set YourObject = MyObject " создаём ссылки на объекты
    Set ThisObject = MyObject
    Set ThatObject = OtherObject
    MyCheck = YourObject Is ThisObject " Возвратит True.
    MyCheck = ThatObject Is ThisObject " Возвратит False.
    " Предполагаем, что MyObject <> OtherObject
    MyCheck = MyObject Is ThatObject " Возвратит False.

    оператор сравнения строк - Like

    Оператор сравнения строк Like используется для сравнения строк.

    Синтаксис этого оператора уже рассмотрен выше.

    Замечание:

    Этот оператор можно использовать для проверки строки String на маску Pattern. Это очень мощный оператор, почти аналог регулярных выражений в Perl.

    Итак, работает этот ператор следующим образом. Если строка подходит под маску, то результат True. Если нет - False. Если одно из выражений Null - результат тоже Null.

    Поведение оператора Like зависит от установленного по умолчанию типа сравнения строк. (оператор Option Compare).

    Если установлен тип Binary (т.е. двоичное сравнение), то строки сравниваются согласно их Ascii кодам (в разных кодировках она разная). Обычно используется такая последовательность:

    A < B < E < Z < a < b < e < z < А < К < Я < а < к < я

    Если установлен тип Text (текстовое сравнение). При таком сравнении последовательность отличается от предыдущей, здесь большие и маленькие буквы - равны:

    (A=a) < (А=а) < (B=b) < (E=e) < (К=к) < (Z=z) < (Я=я)

    Самое главная функция оператора Like - это проверка на принадлежность строки какой-нибудь маске. В маске можно использовать следующие спец. символы:

    Любой отдельный символ
    * Ноли или более символов
    # Любая цифра (0–9).
    Любой отдельный символ, попадающий в список charlist
    [!charlist] Любой отдельный символ, непопадающий в список charlist

    Здесь небольшое замечание. Для того чтобы проверить принадлежность строки на маске, содержащую спец. симолы (т.е. проверить, к примеру, есть ли в строке симолы [,?,#,],*), то нужно заключить из в квадратные скобки . Просто так ставить отдельную скобку [ или ], нельзя.

    При указании списка символов, можно использовать тире (–). Например, чтобы задать последовательность от A до Z, нужно использовать маску . Всё, что находится в скобках не должно содержать никаких разделителей (пробелов, запятых и т.д.), иначе они тоже будут включены в последовательность.

    Есть и другие важные правила при проверки по маске:

    • (!) знак в начале списка символов говорит о том, что нужно искать символы, не входящие в этот список. Если вам необходимо найти сам знак!, то нужно поставить скобки [!].
    • (–) используется для задания диапазона символов.
    • Когда задаётся диапазон символов, то он должен быть возрастающим по ASCII кодам. Т.е. правильная маска, а нет.
    • Последовательность интерпретируется как пустая строка "".

    Примеры:

    Dim MyCheck
    MyCheck = "aBBBa" Like "a*a" " Возвратит True.
    MyCheck = "F" Like "" " Возвратит True.
    MyCheck = "F" Like "[!A-Z]" " Возвратит False.
    MyCheck = "a2a" Like "a#a" " Возвратит True.
    MyCheck = "aM5b" Like "a#[!c-e]" " Возвратит True.
    MyCheck = "BAT123khg" Like "B?T*" " Возвратит True.
    MyCheck = "CAT123khg" Like "B?T*" " Возвратит False.

    myString = "312T-87GD-8922"

    If myString Like "###-##-####" Then ...

    Операторы конкатенации строк

    Вообще-то, чтобы соединить строки в Visual Basic, можно использовать всего 2 оператора. Это & и +. Оператор + описан выше. Поговорим об операторе &.

    оператор конкатенации строк - &

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

    Синтаксис:

    результат = выражение1 & выражение2

    результат обязателен; Любая String или Variant переменная
    выражение1 обязательно; Любое выражение
    выражение2 обязательно; Любое выражение

    Замечания:

    Если в выражение не строка, то она конвертируется в String Variant. Тип данных результата - String только тогда, когда оба выражения имеют тип String. Иначе результат String Variant. Если оба выражения Null, то результат тоже Null. Однако, если только одно из выражений содержит Null значение, то оно интерпретируется как пустая строка "". Empty также интерпретируется как пустая строка "".

    Примеры:

    Dim MyStr
    MyStr = "Hello" & " World"
    " Возвратит строку "Hello World".
    MyStr = "ПроВерКА" & 123 & " ПроВерка"
    " Возвратит строку "ПроВерКА 123 ПроВерка".

    Логические операторы

    Это самая интересная группа оператором. При программировании вы обязаны знать их работу и применение (причём не только на Visual Basic).

    В Visual Basic их 6 штук. Рассмотрим каждый оператор подробно.

    оператор And

    Используется для совершения логичкого умножения над двумя выражениями.

    Синтаксис:

    результат = выражение1 And выражение2

    результат
    выражение1 обязательно; Любое выражение
    выражение2 обязательно; Любое выражение

    Замечания:

    Следующая таблица показывает как работает оператор And:

    Если выражение1 =

    , а выражение2 =

    То результат =

    True True True
    True False False
    True Null Null
    False True False
    False False False
    False Null False
    Null True Null
    Null False False
    Null Null Null

    Оператор And также используется для проверки битов числа. Для битов оператор And работает следующим образом (смотреть слева направо)

    0 0 0
    0 1 0
    1 0 0
    1 1 1

    Примеры:

    Dim A, B, C, D, MyCheck
    MyCheck = A > B And B > C " Возвратит True.
    MyCheck = B > A And B > C " Возвратит False.
    MyCheck = A > B And B > D " Возвратит Null.
    MyCheck = A And B " Возвратит 8 (битовое сравнение).

    Последний пример рассмотрим подробнее. Число 10 представляется в виде битов следущим образом (как тетрада, т.е. 4 бита):

    А число 8 вот так:

    В результате работы оператора And, согласно вышеприведённой таблице мы получим:

    Т.е. 8. Для чего мы это делали? Мы делали это для того, чтобы проверить, установлен ли четвёртый бит у числа A? Получив B, мы убедились в том, что этот бит установлен.

    оператор Or

    Используется для совершения логичкого сложения двух выражений.

    Синтаксис:

    результат = выражение1 Or выражение2

    результат обязателен; Любая числовая (включая Boolean) переменная
    выражение1 обязательно; Любое выражение
    выражение2 обязательно; Любое выражение

    Замечания:

    Следующая таблица показывает как работает оператор Or:

    Если выражение1 =

    , а выражение2 =

    То результат =

    True True True
    True False True
    True Null True
    False True True
    False False False
    False Null Null
    Null True True
    Null False Null
    Null Null Null

    Оператор Or используется для установки определённых битов числа. Для битов оператор Or работает следующим образом (смотреть слева направо)

    0 0 0
    0 1 1
    1 0 1
    1 1 1

    Результат выделен жирным шрифтом.

    Примеры:

    Dim A, B, C, D, MyCheck
    MyCheck = A > B Or B > C " Возвратит True.
    MyCheck = B > A Or B > C " Возвратит True.
    MyCheck = A > B Or B > D " Возвратит True.
    MyCheck = B > D Or B > A " Возвратит Null.
    MyCheck = A Or 5 " Возвратит 15:

    Давайте последний пример рассмотрим подробнее. Число 10 представляется в виде битов следущим образом (как тетрада, т.е. 4 бита):

    А число 5:

    В результате работы оператора Or, согласно вышеприведённой таблице мы получим:

    Т.е. 15. Как видите, оператор Or очень легко и удобно использовать не только в выражениях сравнения, но и для установки определённых битов числа.

    оператор Xor

    Используется для совершения логичкого отрицания двух выражений.

    Синтаксис:

    результат = выражение1 Xor выражение2

    результат обязателен; Любая числовая (включая Boolean) переменная
    выражение1 обязательно; Любое выражение
    выражение2 обязательно; Любое выражение

    Замечания:

    Следующая таблица показывает как работает оператор Xor:

    Оператор Xor используется для инвертирования определённых битов числа. Для битов оператор Xor работает следующим образом (смотреть слева направо)

    0 0 0
    0 1 1
    1 0 1
    1 1 0

    Результат выделен жирным шрифтом. Xor отличается от Or, только тем, что когда оба бита единицы, Xor выдаёт 0. Оператор Xor интересен тем свойством, то при его двойном применении он выдаёт то же число. Это часто используют в криптографии.

    Примеры:

    Dim A, B, C, D, MyCheck
    A = 10: B = 8: C = 6: D = Null
    MyCheck = A > B Xor B > C " Возвратит False.
    MyCheck = B > A Xor B > C " Возвратит True.
    MyCheck = B > A Xor C > B " Возвратит False.
    MyCheck = B > D Xor A > B " Возвратит Null.
    MyCheck = A Xor B " Возвратит 2

    Интересным примером использования оператора Xor является обмен значениями двух численных переменны:

    Dim a As Long , b As Long
    a = 4
    b = 7
    a = a Xor b
    b = a Xor b
    a = a Xor b

    Теперь переменная a содержит значение переменной b, и наоборот.

    оператор Not

    Используется для совершения логичкого инвертирования двух выражений.

    Синтаксис:

    результат = Not выражение

    результат обязателен; Любая числовая (включая Boolean) переменная
    выражение обязательно; Любое выражение

    Замечания:

    Следующая таблица показывает как работает оператор Not:

    Оператор Not инвертирует все биты выражения. Для битов оператор Not работает следующим образом (смотреть слева направо):

    0 1
    1 0

    Результат выделен жирным шрифтом.

    Примеры:

    Dim A, B, C, D, MyCheck
    A = 10: B = 8: C = 6: D = Null
    MyCheck = Not (A > B) " Возвратит False.
    MyCheck = Not (B > A) " Возвратит True.
    MyCheck = Not (C > D) " Возвратит Null.
    MyCheck = Not A " Возвратит -11 (все биты инвертированы)

    Рассмотрим подробнее последний пример. Число 10 представляется в виде битов следущим образом (как байт, т.е. 8 битов):

    После инвертирования всех битов получим:

    А это и есть -11.

    оператор Eqv

    Используется для совершения логической эквивалентности двух выражений.

    Синтаксис:

    результат = выражение1 Eqv выражение2

    результат обязателен; Любая числовая (включая Boolean) переменная
    выражение1 обязательно; Любое выражение
    выражение2 обязательно; Любое выражение

    Замечания:

    Следующая таблица показывает как работает оператор Eqv:

    Для битов оператор Eqv работает следующим образом (смотреть слева направо)

    0 0 1
    0 1 0
    1 0 0
    1 1 1

    Примеры:

    Dim A, B, C, D, MyCheck
    A = 10: B = 8: C = 6: D = Null
    MyCheck = A > B Eqv B > C " Возвратит True.
    MyCheck = B > A Eqv B > C " Возвратит False.
    MyCheck = A > B Eqv B > D " Возвратит Null.
    MyCheck = A Eqv B " Возвратит -3

    оператор Imp

    Используется для совершения логической импликации двух выражений.

    Синтаксис:

    результат = выражение1 Imp выражение2

    результат обязателен; Любая числовая (включая Boolean) переменная
    выражение1 обязательно; Любое выражение
    выражение2 обязательно; Любое выражение

    Замечания:

    Следующая таблица показывает как работает оператор Imp:

    Если выражение1 =

    , а выражение2 =

    То результат =

    True True True
    True False False
    True Null Null
    False True True
    False False True
    False Null True
    Null True True
    Null False Null
    Null Null Null

    Для битов оператор Imp работает следующим образом (смотреть слева направо)

    0 0 1
    0 1 1
    1 0 0
    1 1 1

    Примеры:

    Dim A, B, C, D, MyCheck
    A = 10: B = 8: C = 6: D = Null
    MyCheck = A > B Imp B > C " Возвратит True.
    MyCheck = A > B Imp C > B " Возвратит False.
    MyCheck = B > A Imp C > B " Возвратит True.
    MyCheck = B > A Imp C > D " Возвратит True.
    MyCheck = C > D Imp B > A " Возвратит Null.
    MyCheck = B Imp A " Возвратит -1

    Инструкции (или операторы) языка – это программные единицы, выполняющие какие-то действия или описывающие данные.

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

    О ператор присвоения

    Оператор присвоения используется для присвоения нового значения переменной в ходе выполнения программы. Знак присвоения «=».

    Например , оператор:

    x = Sqr(5 + Tan(1.8) ^ 2)

    присваивает переменной х значение выражения . В результате вычисления выражения, записанного в правой части, получим вещественное число. Но значение, которое будет присвоено переменной х, зависит от того, как был описан тип этой переменной. Так, если переменная х имеет тип Single, ей будет присвоен результат 4,834464 , если Double, то 4,83446368725481, а если Integer, то 5.

    Тип данных переменной х должен быть совместим с типом данных этого выражения. Кроме неявного преобразования из одного типа в другой при присвоении, в языке Visual Basic предусмотрена возможность преобразования типов с помощью функций. Например, функция CDbl преобразует данные к типу Double, CInt – к типу Integer, Clng – к типу Long, CSng – к типу Single, CStr – к типу String и т. д.

    Функции CInt и Clng выполняют округление результата. При этом если дробная часть числа равна 0,5, округление производится до ближайшего четного числа.

    Оператор присвоения позволяет не только присвоить значение переменной, но и задать значения свойств объектов VBA. Например, оператор

    Rows("1:1").Font. Bold = True

    делает полужирным шрифт в первой строке рабочего листа.

    ПЕРЕНОС СТРОКИ

    Комбинация <Пробел> + <Знак подчеркивания> в конце строки обеспечивает то, что последующая строка является продолжением предыдущей. При этом надо помнить что:

    § Нельзя разбивать переносом строковые константы

    § Допустимо не более семи продолжений одной и той же строки

    § Сама строка не может содержать более 1024 символов

    Пример.

    Некорректный перенос Корректный перенос

    Строка = "Visual Basic for _ Строка = "Visual Basic" _

    Applications" & "for Applications "

    КОММЕНТАРИИ

    Текст, следующий в программе за символом (") вплоть до конца строки игнорируется компилятором и является комментарием. С помощью комментариев добавляются пояснения и описания к программе. Комментарии полезны при отладке программы: они позволяют временно отключить строки программы при отладке.

    Условный оператор

    Условный оператор выполняет определенные инструкции (операторы) в зависимости от значения выражения условия. Блок-схема проверки условия имеет вид:

    Рис. 1. Ветвление может быть неполным (такую структуру называют еще обход).

    Рис. 2. Условный оператор имеет две формы синтаксиса: строчную и блочную.

    Строчная форма

    If условие Then [операторы­_если_истина ]

    Алгоритм, представленный на рис. 1, в строчной форме будет записан в виде

    If условие Then операторы­_если_истина Else операторы­_если_ложь

    Рисунку 2 соответствует запись

    If условие Then операторы­_если_истина

    Рисунку 3 соответствует запись

    If условие Then Else операторы­_если_ложь

    Блочная форма

    If условие-1 Then

    [операторы­_если условие–1_истина ]

    [операторы­_если_ все_условия_ложь ]]

    Условия, перечисленные в частях If и ElseIf, представляют собой выражения отношения или логические выражения. При выполнении одного из условий выполняются инструкции, следующие за соответствующим ему ключевым словом Then, а остальные инструкции игнорируются (т. е. дальнейшие проверки не выполняются и управление передается оператору, следующему за End If). Если ни одно из логических условий не равно истине, то выполняются операторы­_если_ все_предыдущие_условия_ложь , либо, если эта часть опущена, управление передается строке программы, следующей после условного оператора.

    Блочная форма оператора If более предпочтительна, если:

    При выполнении или невыполнении условия выполняется несколько операторов (строчную форму в этом случае тоже можно использовать, но строка будет слишком длинной, а программа – менее понятной);

    Последовательно проверяется несколько условий, и при выполнении очередного условия проверять последующие условия нецелесообразно (для этого и используется ключевое слово ElseIf).

    Пример

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

    По известному объему заказа надо определить его стоимость.

    Для вычисления стоимости заказа используем функцию:

    Public Function Стоимость_заказа(Количество As Long) As Double

    If Количество <= 999 Then

    Стоимость_заказа = Количество * 5

    ElseIf Количество <= 1999 Then

    Стоимость_заказа = Количество * 4.8

    Стоимость_заказа = Количество * 4.75

    В данном случае можно было использовать и строчную форму оператора IF:

    Public Function Стоимость_заказа1(Количество As Long) As Double

    If Количество <= 999 Then Стоимость_заказа1 = Количество * 5

    If Количество >= 1000 And Количество <= 1999 Then Стоимость_­ заказа1 = Количество * 4.8

    If Количество >= 2000 Then Стоимость_заказа1 = Количество * 4.75

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

    Однако можно привести примеры, когда при выполнении (или невыполнении) одного из условий другие проверять просто нельзя.

    Например , некоторые операторы должны выполняться при совместном выполнении условий: http://po-teme.com.ua/images/adIIIin/image014_e652e49476c6f0eb9cf40b68cc090828.gif" alt="" width="56" height="27 src=">. Если для проверки использовать оператор

    If x>0 and y

    то при отрицательном значении х возникнет ошибка при вызове функции sqr (под корнем отрицательное число).

    Этой ошибки можно избежать, если использовать конструкцию

    If x > 0 Then If y < Sqr(x) Then

    В последней форме записи если есть ключевое слово Else, то оно относится к последнему оператору If.

    Оператор выбора

    Select Case выражение

    [инструкции_ else ]]

    Параметр выражение – любое числовое или строковое выражение. Вместо вычисления логического условия выполняется сравнение значения выражения с каждой из величин, заданных параметром список_выражений- n .

    Величины для сравнения, входящие в список_выражений-n , могут быть заданы в виде:

    – значения;

    – диапазона значений в виде начальное_значение To конечное_значение ;

    – выражения сравнения в виде Is оператор_сравнения значение ;

    – списка любых из перечисленных видов выражений (разделитель – запятая).

    В инструкции может быть произвольное число блоков Case. Если ни одно из условий не является истинным, то выполняются инструкции блока Case Else.

    Например, если условием является оценка выше тройки, то это условие можно записать: Case 4, 5 или Case Is >3 или Case Is >= 4 или Case 4 To 5.

    Примечание. Ключевое слово Is можно не вводить, оно добавится само.

    Пример

    Рассмотренный выше пример с дисконтируемой ценой с помощью конструкции Select Case можно решить так:

    Public Function Стоимость_заказа2(Количество As Long) As Double

    Select Case Количество

    Стоимость_заказа2 = Количество * 5

    Case 1000 To 1999

    Стоимость_заказа2 = Количество * 4.8

    Case Is >= 2000

    Стоимость_заказа2 = Количество * 4.75

    Программа на VBA – это последовательность операторов.

    При составлении программ следует придерживаться ряда соглашений. Так, на одной строке можно разместить несколько операторов. Между операторами в одной строке ставится двоеточие.

    Любую строку можно разбить на две, расположив в конце первой знаки символов «Пробел» + «Знак подчеркивания» (_), в этом случае вторая строка будет считаться продолжением первой.

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

    1. Оператор Dim предназначен для объявления типов переменных.

    1. Dim A As Integer – переменная A объявляется как целое, т.е. в ней будут храниться только целые величины .

    2. Dim D As Date – объявляется переменная D для хранения дат.

    3. Dim Фамилия, Наименование As String – объявлютсяпеременные. Фамилия и Наименование, предназначеные для хранения текста.

    4. Dim B(12) As Integer – объявляется одномерный массив (вектор), состоящий из 12 целых чисел, причем по умолчанию первый элемент массива будет B(0), а последний B(12).

    5. Dim B(3,3) As Single – объявляется двумерный массив 3х3 (матрица), состоящий из действительных чисел.

    Если не указан тип переменной, то по умолчанию используется тип Variant. Однако указание конкретного типа переменной делает программу надежнее и убыстряет ее работу, т.к. VBA не требуется тратить время на распознавание необъявленной переменной при каждом обращении к ней.

    Если размер массива M заранее не известен и определяется в ходе программы, то при описании массива число элементов не указывается, и массив определяется так:

    Dim M() As Integer

    После определения числа элементов массива, например, N, необходимо записать оператор

    2. Оператор присваивания предназначен для присваивания переменной какого-либо значения.

    Синтаксис:

    Переменная (или свойство объекта) = выражение.

    1. а=5 – переменной А присвоить значение 5 ;

    2. b=«Менеджер» – переменной b присвоить значение «Менеджер» ;

    · Адрес=Sheets("Организации").Cells(2,2) – переменной Адрес присвоить содержимое ячейки B2, которая находится на листе Организации в текущей рабочей книге;

    · Фамилия=UserForm1.TextBox1.Text – переменнойФамилия присвоить содержимое поля TextBox1 пользовательской формы UserForm1.

    o Оператор With/End with избавляет программиста от большого количества повторений имени одного и того же объекта.

    Синтаксис:

    With объект

    оператор1

    оператор2

    операторN

    Например, вместо последовательности операторов

    UserForm1.TextBox1.Text = Date

    UserForm1.TextBox2.Text = “ “

    UserForm1.ComboBox1.Text = “ “

    можно записать так

    TextBox1.Text = Date

    . TextBox2.Text = “ “

    . ComboBox1.Text = “ “

    REM На листе Лист1 в столбце А, начиная со второй строки, записаны ‘тарифы сотрудников. Заполним поле со списком ComboBox1 в ‘пользовательской форме UserForm1

    ‘Первая строка программы – на листе Лист1 в столбце А ‘подсчитывается количество заполненных ячеек, результат ‘присваивается переменной N

    N=Application.CountA(Sheets(“Лист1”).Range(“A:A”)).

    D=”A2:A”&Cint(N)

    Sheets(“Лист1”).Range(D).Name=”Тарифы”

    TextBox1.Text = Date

    . TextBox2.Text = “ “

    . ComboBox1.Text = “ “

    . ComboBox1.Rowsource = “Тарифы “

    1. Условный оператор If/Then/Else – позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие

    Синтаксис:

    If условие Then операторы1 [Else операторы2]

    Если условие истинно, то выполняются операторы1, в противном случае выполняются операторы2.

    Допускается также использование сложного условного оператора, который записывается в виде блока:

    If условие1 Then

    операторы1

    ElseIf условие2 Then

    операторы2

    операторы3

    Фамилия=.TextBox1.Text

    If Фамилия =”“ Then MsgBox”Вы не ввели фамилию”

    REM При установленном флажке номер 1 клиенту ‘предоставляется скидка 5%

    ‘ Сумма – количество денег, выплачиваемых клиентом

    ‘ Стоимость товара хранится в переменной Стоимость

    If UserForm1.CheckBox1.Value = True Then

    Сумма=Стоимость-Стоимость*0.05

    Else Cумма=Стоимость

    1) REM Предположим, что Тариф – это установленный тариф, а Время ‘–отработанное время. Время и тариф вводятся в поля ввода ‘соответственно вTextBox1 и TextBox2. Зарплата рассчитывается по ‘формуле Тариф*Время. Напишем программу для вывода в форму ‘рассчитанной зарплаты. Label4 – надпись, подготовленная для ‘вывода значения зарплаты

    If IsNumeric(TextBox1.Text)=True And _

    IsNumeric(TextBox2.Text)=True Then

    Тариф=TextBox1.Text

    Время=TextBox2.Text

    Label4.Caption=Тариф*Время

    В первом примере работа ведется с пользовательской формой номер один. Переменной Фамилия присваивается содержимое поля ввода номер один. Затем осуществляется проверка, было ли что-либо введено в поле ввода (не пуста ли переменная Фамилия ). Если переменная Фамилия пуста, то на экран выводится окно сообщения.

    Во втором примере – первые строки, начинающиеся со слова REM и апострофов, – это комментарии, объясняющие назначения переменных. С помощью условного оператора определяется сумма, выплачиваемая клиентом.

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

    1) Оператор безусловного перехода GoTo предназначен для задания перехода на указанную строку внутри программы.

    Синтаксис:

    GoTo Строка

    Обязательный аргумент Строка может быть любой меткой строки или номером строки.

    If IsNumeric(TextBox1.Text)=False Then GoTo Ошибка

    Ошибка: MsgBox “Ошибка при вводе чисел!”

    В приведенном примере выполняется проверка того, введено ли число в поле ввода номер один. Если введено не число, то осуществляется переход на строку с меткой Ошибка и на экран выводится сообщение.

    2) Оператор цикла For/To/Next предназначен для программирования повторяющихся фрагментов, т.е. для описания циклических алгоритмов.

    Синтаксис:

    For переменная=M1 To M2 [Step M3]

    операторы

    M1, M2, M3 – выражения. Оператор цикла повторяет выполнение группы операторов, пока переменная (счетчик) изменяется от начального значения М1 до конечного М2 с указанным шагом М3. Если шаг не указан, то он полагается равным 1.

    Фамилия = Sheets(“Сотрудники”).Cells(I,1)

    UserForm1.ComboBox1.AddItem Фамилия

    В приведенном примере предполагается, что на листе «Cотрудники» в первом столбце записаны фамилии сотрудников, которые нужно внести в список поля со списком номер один пользовательской формы номер один. Алгоритм работы программы:

    1) Переменной I присваивается значение 2.

    2) Переменной Фамилия присваивается значение ячейки А(I,1), расположенной на листе «Сотрудники». (При первом выполнении цикла это ячейка А(2,1))

    3) В список поля со списком ComboBox1 добавляется элемент из переменной Фамилия.

    4) К значению переменной I добавляется 1 (если шаг не указан, то он полагается равным 1). Выполняется проверка, не превысила ли величина I 10 (конечного значения переменной I, в примере М3=10)? Если величина I еще меньше или равна 10, то выполняются пункты 2-4, в противном случае работа цикла заканчивается.

    Таким образом, приведенная программа позволяет заполнить данными список поля со списком ComboBox1.

    Основные алгоритмы, используемые при решении
    экономических задач

    Основные алгоритмы рассмотрим на следующем примере. В выполнении работы по договору участвовали сотрудники разных отделов. В таблице, на листе «Лист1» представлены данные о количестве отработанных часов каждым из сотрудников (рис.8).


    Рис.8.Данные о количестве отработанных часов

    сотрудниками фирмы