Операторы vba excel. Описание операторов VB (Visual Basic). Некорректный перенос Корректный перенос

Операторы VBA: арифметические, логические, сравнения, присвоения

Оператор -- это наименьшая способная выполняться единица кода VBA. Оператор может объявлять или определять переменную, устанавливать параметр компилятора VBA или выполнять какое-либо действие в программе.

Арифметических операторов в VBA всего 7. Четыре стандартных: сложение (+), вычитание (-), умножение (*), деление (/) и еще три:

  • · возведение в степень (^), например 2^3 = 8;
  • · целочисленное деление (). Делит первое число на второе, отбрасывая (не округляя) дробную часть. Например, 52 = 2;
  • · деление по модулю (Mod). Делит первое число на второе, возвращая только остаток от деления. Например, 5 Mod 2 = 1.

Оператор присвоения в VBA -- знак равенства. Можно записывать так:

а можно еще проще:

Во втором случае не путайте знак равенства с оператором равенства.

Выражение

значит "присвоить переменной nVar значение 10", а если строка выглядит так:

то это значит "если значение переменной nVar равно 10".

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

Операторов сравнения в VBA всего 8:

  • · равенство (=), например, If (nVar = 10);
  • · больше, чем и меньше, чем (> и
  • · больше или равно и меньше или равно (>= и
  • · не равно (
  • · сравнение объектов (Is). Определяет, ссылаются объектные переменные на тот же объект или на разные, например, If(obj1 is obj2);
  • · подобие (Like). Сравнивает строковый объект с шаблоном и определяет, подходит ли шаблон.

Операторы сравнения всегда возвращают true или false -- true, если утверждение истинно, и false, если ложно.

Немного про сравнение строковых значений:

  • · при сравнении строковых значений регистр учитывается;
  • · пробелы в строковых значениях также учитываются;
  • · при сравнении текстовых строк на больше/меньше по умолчанию сравниваются просто двоичные коды символов -- какие больше или меньше. Если нужно использовать тот порядок, который идет в алфавите, то можно воспользоваться командой Option Compare Text

Чуть подробнее про оператор Like. Общий его синтаксис выглядит как

Выражение1 Like Выражение2

При этом Выражение1 -- любое текстовое выражение VBA, а Выражение2 -- шаблон, который передается оператору Like. В этом шаблоне можно использовать специальные подстановочные символы (см. Табл. 1)

Табл. 1 Подстановочные символы для оператора LIKE

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

  • · AND -- логическое И, должны быть истинными оба условия;
  • · OR -- логическое ИЛИ, должно быть истинным хотя бы одно из условий;
  • · NOT -- логическое отрицание, возвращает TRUE, если условие ложно;
  • · XOR -- логическое исключение. В выражении E1 XOR E2 возвращает TRUE, если только E1 = TRUE или только E2 = TRUE, иначе -- FALSE;
  • · EQV -- эквивалентность двух выражений, возвращает TRUE, если они имеют одинаковое значение;
  • · IMP -- импликация, возвращает FALSE, если E1 = TRUE и E2 = FALSE, иначе -- TRUE.

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

Почти в любой программе VBA используются операторы конкатенации. В VBA их два -- + или &. Рекомендуется всегда использовать &, потому что:

  • · при использовании & производится автоматическое преобразование числовых значений в строковые -- нет опасности допустить ошибку;
  • · при использовании оператора + сложение строкового значения со значением типа Null дает Null. Пример:

MsgBox "Сообщение пользователю" & vUserName

Порядок применения операторов можно регулировать при помощи круглых скобок.

3 . Переменные и типы данных

Переменные VBA, объявление переменных, Option Explicit, правила именования, типы данных VBA, исходные значения переменных

Переменные -- контейнеры для хранения изменяемых данных. Без них не обходится практически ни одна программа. Для простоты переменную можно сравнить с номерком в гардеробе -- вы сдаете в "гардероб" какие-то данные, в ответ вам выдается номерок. Когда вам опять потребовались эти данные, вы "предъявляете номерок" и получаете их. Пример работы с переменными в VBA может выглядеть так:

Dim nMyAge As Integer

nMyAge = nMyAge + 10

Dim nMyAge As Integer

Как расшифровать эту строку:

Dim -- это область видимости переменной. В VBA предусмотрено 4 ключевых слова для определения области видимости переменных:

  • · Dim -- используется в большинстве случаев. Если переменная объявлена как Dim в области объявлений модуля, она будет доступна во всем модуле, если в процедуре -- только на время работы этой процедуры;
  • · Private -- при объявлении переменных в VBA значит то же, что и Dim;
  • · Public -- такая переменная будет доступна всем процедурам во всех модулях данного проекта, если вы объявили ее в области объявлений модуля. Если вы объявили ее внутри процедуры, она будет вести себя как Dim/Private;
  • · Static -- такие переменные можно использовать только внутри процедуры. Эти переменные видны только внутри процедуры, в которой они объявлены, зато они сохраняют свое значение между разными вызовами этой процедуры. Обычно используются для накопления каких-либо значений. Например:

Static nVar1 As Integer

nVar1 = nVar1 + 1

Если нет никаких особых требований, то есть смысл всегда выбирать область видимости Dim.

Второе слово в нашем объявление (nMyAge) -- это идентификатор (проще говоря, имя) переменной. Правила выбора имен в VBA едины для многих элементов (переменные, константы, функции и процедуры и т.п.). Имя:

  • · должно начинаться с буквы;
  • · не должно содержать пробелов и символов пунктуации (исключение -- символ подчеркивания);
  • · максимальная длина -- 255 символов;
  • · должно быть уникальным в текущей области видимости (подробнее -- далее);
  • · зарезервированные слова (те, которые подсвечиваются другим цветом в окне редактора кода) использовать нельзя.

При создании программ VBA настоятельно рекомендуется определиться с правилами, по которым будут присваиваться имена объектам -- соглашение об именовании. Чаще всего используется так называемое венгерское соглашение (в честь одного из программистов Microsoft, Charles Simonyi, венгра по национальности):

  • · имя переменной должно начинаться с префикса, записанного строчными буквами. Префикс указывает, что именно будет храниться в этой переменной:
    • o str (или s) -- String, символьное значение;
    • o fn (или f) -- функция;
    • o c (или сделать все буквы заглавными) -- константа;
    • o b -- Boolean, логическое значение (true или false);
    • o d -- дата;
    • o obj (или o) -- ссылка на объект;
    • o n -- числовое значение.
  • · имена функций, методов и каждое слово в составном слове должно начинаться с заглавной буквы:

MsgBox objMyDocument.Name

Sub CheckDateSub()

· в ранних версиях VB не было слова Const -- все константы определялись как переменные, а для отличия их записывали заглавными буквами, между словами ставили подчеркивания: COMPANY_NAME

Многие программисты используют такой подход для обозначения констант и сейчас (но использование ключевого слова Const теперь обязательно -- об этом будет рассказано в следующем разделе).

Третья часть нашего объявления -- As Integer -- это указание на тип данных нашей переменной. Тип данных определяет, данные какого вида можно будет хранить в нашей переменной.

В VBA предусмотрены следующие типы данных:

· числовые (byte -- целое число от 0 до 255, integer -- целое число от -32768 до 32767, long -- большое целое число, currency (большое десятичное число с 19 позициями, включая 4 позиции после запятой), decimal (еще большее десятичное число с 29 позициями), single и double -- значение с плавающей запятой (double в два раза больше));

Внимание! Попытка объявить переменную с типом Decimal (например, Dim n As Decimal) приведет к синтаксической ошибке. Чтобы получить возможность работать с типом Decimal, переменную нужно изначально объявить как Variant или вообще объявить без типа (Dim n), поскольку тип данных Variant используется в VBA по умолчанию.

  • · строковые (string переменной длины (до примерно 2 млрд символов) и фиксированной длины (до примерно 65400 символов);
  • · дата и время (date -- от 01.01.100 до 31.12.9999);
  • · логический (boolean -- может хранить только значения True и False);
  • · объектный (object -- хранит ссылку на любой объект в памяти);
  • · Variant -- специальный тип данных, который может хранить любые другие типы данных.

Можно еще использовать пользовательские типы данных, но их вначале нужно определить при помощи выражения Type. Обычно пользовательские типы данных используются как дополнительное средство проверки вводимых пользователем значений (классический пример -- почтовый индекс).

Некоторые моменты, связанные с выбором типов данных для переменных:

  • · общий принцип -- выбирайте наименьший тип данных, который может вместить выбранные вами значения. Если есть какие-то сомнения -- выбирайте больший тип данных во избежание возникновения ошибок;
  • · если есть возможность, лучше не использовать типы данных с плавающей запятой (single и double). Работа с такими типами данных производится медленнее, кроме того, могут быть проблемы при сравнениях за счет округлений;
  • · если есть возможность, лучше не пользоваться типом Variant. Этот тип все равно приводится VBA к одному из других типов, но памяти для него требуется больше. Кроме того, в ходе такого неявного образования могут возникнуть ошибки;
  • · при определении переменных можно использовать так называемые символы определения типа (% -- integer, $ -- String и т.п.). Например, в нашем примере нужно закомментировать строку Dim nVar 1 As Integer, а во второй строке написать:

nVar1% = nVar1% + 1

Такой подход является устаревшим и к использованию не рекомендуется.

При объявлении переменных можно и не указывать ее тип. Например, наше объявление может выглядеть так: Dim nVar1

В этом случае переменная будет автоматически объявлена с типом Variant.

В принципе, в VBA можно работать и без объявления переменных. Например, такой код

nVar1 = nVar1 + 1

будет вполне работоспособным. Если мы используем переменную в программе без ее объявления, то будет автоматически создана новая переменная типа Variant. Однако объявлять переменные нужно обязательно! И при этом желательно явно указывать нужный тип данных. Почему:

  • · сокращается количество ошибок: программа с самого начала откажется принимать в переменную значение неправильно типа (например, строковое вместо числового);
  • · при работе с объектами подсказка по свойствам и методам действует только тогда, когда мы изначально объявили объектную переменную с нужным типом. Например, в Excel два варианта кода будут работать одинаково:

первый вариант:

Dim oWbk As Workbook

Set oWbk = Workbooks.Add()

второй вариант:

Set oWbk = Workbooks.Add()

Но подсказка по свойствам и методам объекта oWbk будет работать только во втором случае.

Все опытные разработчики вообще запрещают использование переменных без явного их объявления. Для этого можно воспользоваться специальной командой компилятора (она помещается только в раздел объявлений модуля) Option Explicit

а можно вставлять эту команду во все модули при их создании автоматически -- установив в окне редактора кода флажок Require Variable Declarations (меню Tools -> Options, вкладка Editor).

Проиллюстрировать, зачем они это делают, можно на простом примере:

С виду код не должен вызывать никаких проблем и просто выводить в окне сообщения единицу. На самом деле он выведет пустое окно сообщения. Причина спрятана очень коварно: в третьей строке n -- это вовсе не английская буква N, а русская П. На вид в окне редактора кода отличить их очень сложно. В то же время компилятор VBA, встретив такой код, просто создаст новую переменную с типом данных Variant, у которой будет пустое значение. На выявление такой ошибки может потребоваться определенное время.

Хорошее правило -- объявлять переменные заблаговременно, а не когда они потребовались. Это позволяет сделать программу более читаемой и четко спланированной.

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

Dim n1 As Integer, s1 As String

Присвоение значений переменным выглядит так:

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

nVar1 = nVar1 + 1

В обоих примерах знак равенства означает не "равно", а присвоить.

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

· строковые значения всегда заключаются в двойные кавычки:

sVar1 = "Hello";

значение даты/времени заключаются в "решетки" -- символы фунта:

dVar1 = #05/06/2004#

Обратите внимание, что при присвоении значения даты/времени таким "явным способом" нам придется использовать принятые в США стандарты: 05 в данном случае -- это месяц, 06 -- день. Отображение же этого значения (например, в окне сообщения) будет зависеть от региональных настроек на компьютере пользователя.

Если нужно передать шестнадцатеричное значение, то перед ним ставятся символы &H:

Что содержится в переменных до присвоения им значений?

  • · В переменных всех числовых типов данных -- 0.
  • · В строковых переменных переменной длины -- "" (строка нулевой длины).
  • · В строковых переменных фиксированной длины -- строка данной длины с символами ASCII 0 (эти символы на экран не выводятся).
  • · В Variant -- пустое значение.
  • · В Object -- ничто (нет ссылки ни на один из объектов).

Операторы VBA: арифметические, логические, сравнения, присвоения

Оператор - это наименьшая способная выполняться единица кода VBA. Оператор может объявлять или определять переменную, устанавливать параметр компилятора VBA или выполнять какое-либо действие в программе.

Арифметических операторов в VBA всего 7. Четыре стандартных: сложение (+), вычитание (-), умножение (*), деление (/) и еще три:

  • возведение в степень (^), например 2^3 = 8 ;
  • целочисленное деление (\). Делит первое число на второе, отбрасывая (не округляя) дробную часть. Например, 5\2 = 2 ;
  • деление по модулю (Mod). Делит первое число на второе, возвращая только остаток от деления. Например, 5 Mod 2 = 1 .

Оператор присвоения в VBA - знак равенства. Можно записывать так:

Let nVar = 10

а можно еще проще:

nVar = 10

Во втором случае не путайте знак равенства с оператором равенства.

Выражение

nVar = 10

значит "присвоить переменной nVar значение 10", а если строка выглядит так:

If (nVar = 10)

то это значит "если значение переменной nVar равно 10".

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

Операторов сравнения в VBA всего 8:

  • равенство (=), например, If (nVar = 10) ;
  • больше, чем и меньше, чем (> и <), например, If (nVar > 10) ;
  • больше или равно и меньше или равно (>= и <=), например, If (nVar >= 10) ;
  • не равно (<>), например, If(nVar<>10) ;
  • сравнение объектов (Is). Определяет, ссылаются объектные переменные на тот же объект или на разные, например, If(obj1 is obj2) ;
  • подобие (Like). Сравнивает строковый объект с шаблоном и определяет, подходит ли шаблон.

Операторы сравнения всегда возвращают true или false - true, если утверждение истинно, и false, если ложно.

Немного про сравнение строковых значений:

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

Option Compare Text

Чуть подробнее про оператор Like. Общий его синтаксис выглядит как

Выражение1 Like Выражение2

При этом Выражение1 - любое текстовое выражение VBA, а Выражение2 - шаблон, который передается оператору Like. В этом шаблоне можно использовать специальные подстановочные символы (см. Табл. 3.1)

Табл. 3.1 Подстановочные символы для оператора LIKE

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

  • AND - логическое И, должны быть истинными оба условия;
  • OR - логическое ИЛИ, должно быть истинным хотя бы одно из условий;
  • NOT - логическое отрицание, возвращает TRUE, если условие ложно;
  • XOR - логическое исключение. В выражении E1 XOR E2 возвращает TRUE, если только E1 = TRUE или только E2 = TRUE, иначе - FALSE;
  • EQV - эквивалентность двух выражений, возвращает TRUE, если они имеют одинаковое значение;
  • IMP - импликация, возвращает FALSE, если E1 = TRUE и E2 = FALSE, иначе - TRUE.

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

Почти в любой программе VBA используются операторы конкатенации. В VBA их два - + или &. Рекомендуется всегда использовать &, потому что:

  • при использовании & производится автоматическое преобразование числовых значений в строковые - нет опасности допустить ошибку;
  • при использовании оператора + сложение строкового значения со значением типа Null дает Null.

MsgBox "Сообщение пользователю" & vUserName

Порядок применения операторов можно регулировать при помощи круглых скобок.


Оператор Синтаксис Описание
AND A AND B Конъюнкция: Если А и В имеют значение True, то - True. Иначе - False
OR A OR B Дизъюнкция: Если любой из операндов имеет значение True, то - True. Иначе - False
NOT NOT A Отрицание: Если А имеет значение False, то - True. Иначе - False
XOR A XOR B Исключение: Если А имеет значение True или В имеет значение True, то - True. Иначе - False
EQV A EQV B Эквивалентность: Если А имеет такое же значение что и В, то - True. Иначе - False
IMP A IMP B Импликация: Если А имеет значение True и В имеет значение False, то - False. Иначе - True

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

Результатом логической операции является значение типа Boolean (или Null, если хотя бы один из операндов имеет значение Null).

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

Синтаксис:
Операнд_1 AND Операнд_2


Оператор AND выполняет логическую конъюнкцию .

Результатом данной операции является значение True, только когда оба операнда имеют значение True, иначе - False.


Таблица истинности


Оператор AND можно использовать для нескольких операндов:


(5 3) AND (5=6) результатом будет False


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

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

Синтаксис:
Операнд_1 OR Операнд_2


Оператор OR выполняет логическую дизъюнкцию .

Результатом данной операции является значение True, если хотя бы один из операндов имеет значение True, иначе - False.


Таблица истинности


Оператор OR можно использовать для нескольких операндов:


(5 3) OR (5=6) результатом будет True


Независимо от количества операндов результатом логической операции OR будет всегда True в том случае, если хотя бы один из операндов выражения будет иметь значение True. Иначе результатом будет False.

Операторы AND и OR можно комбинировать:


((5 3)) OR (5=6) результатом будет True

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

Синтаксис:
NOT Операнд


Оператор NOT выполняет логическое отрицание .

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


Таблица истинности


Операторы AND OR NOT можно комбинировать:


((5 3)) OR NOT (5=6) результатом будет True

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

Синтаксис:
Операнд_1 XOR Операнд_2


Оператор XOR выполняет логическое исключение .

Результатом данной операции является значение True, если операнды имеют разные значения, иначе - False.


Таблица истинности


((5 3)) OR NOT (5=6) XOR (5=5) результатом будет False

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

Синтаксис:
Операнд_1 EQV Операнд_2


Оператор EQV - это оператор логической эквивалентности .

Результатом данной операции является значение True, если операнды имеют одинаковые значения, иначе - False.


Таблица истинности


((5 3)) OR NOT (5=6) EQV (5=5) результатом будет True

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

Синтаксис:
Операнд_1 IMP Операнд_2


Оператор IMP выполняет логическую операцию импликации .


Таблица истинности


((5 3)) OR NOT (5=6) IMP (5=5) результатом будет True


Логический оператор IMP наименее интуитивно понятный из всех логических операторов. К счастью, необходимость в его применении возникает довольно редко.

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

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

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

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

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

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 предназначен для объявления типов переменных.

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

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

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

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

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

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

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

Dim M() As Integer

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

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

Синтаксис:

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

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

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

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

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

3. Оператор 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 = “Тарифы “

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

Синтаксис:

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

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

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

If условие1 Then

операторы1

ElseIf условие2 Then

Поделитесь с друзьями или сохраните для себя:

Загрузка...