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

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

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

· целочисленное деление (). Делит первое число на второе, отбрасывая (не округляя) дробную часть. Например, 52 = 2;

· деление по модулю (Mod). Делит первое число на второе, возвращая только остаток от деления. Например, 5 Mod 2 = 1.

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

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

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

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

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

· больше или равно и меньше или равно (>= и <=), например, If (nVar >= 10);

· сравнение объектов (Is). Определяет, ссылаются объектные переменные на тот же объект или на разные, например, If(obj1 is obj2);

· подобие (Like). Сравнивает строковый объект с шаблоном и определяет, подходит ли шаблон.

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

· при сравнении строковых значений регистр учитывается;

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

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

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

Любой символ (только один), кроме приведенных в списке

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

· 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. Пример:

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

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

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

Перед работой с переменной настоятельно рекомендуется ее объявить. Объявление переменной в нашем примере выглядит так:

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

· Dim -- используется в большинстве случаев. Если переменная объявлена как Dim в области объявлений модуля, она будет доступна во всем модуле, если в процедуре -- только на время работы этой процедуры;

· Private -- при объявлении переменных в VBA значит то же, что и Dim;

· Public -- такая переменная будет доступна всем процедурам во всех модулях данного проекта, если вы объявили ее в области объявлений модуля. Если вы объявили ее внутри процедуры, она будет вести себя как Dim/Private;

· Static -- такие переменные можно использовать только внутри процедуры. Эти переменные видны только внутри процедуры, в которой они объявлены, зато они сохраняют свое значение между разными вызовами этой процедуры. Обычно используются для накопления каких-либо значений. Например:

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

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

· не должно содержать пробелов и символов пунктуации (исключение -- символ подчеркивания);

· должно быть уникальным в текущей области видимости (подробнее -- далее);

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

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

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

· имена функций, методов и каждое слово в составном слове должно начинаться с заглавной буквы:

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

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

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

· числовые (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 символов);

· логический (boolean -- может хранить только значения True и False);

· объектный (object -- хранит ссылку на любой объект в памяти);

· Variant -- специальный тип данных, который может хранить любые другие типы данных.

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

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

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

· если есть возможность, лучше не использовать типы данных с плавающей запятой (single и double). Работа с такими типами данных производится медленнее, кроме того, могут быть проблемы при сравнениях за счет округлений;

· если есть возможность, лучше не пользоваться типом Variant. Этот тип все равно приводится VBA к одному из других типов, но памяти для него требуется больше. Кроме того, в ходе такого неявного образования могут возникнуть ошибки;

· при определении переменных можно использовать так называемые символы определения типа (% -- integer, $ -- String и т.п.). Например, в нашем примере нужно закомментировать строку Dim nVar 1 As Integer, а во второй строке написать:

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

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

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

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

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

· сокращается количество ошибок: программа с самого начала откажется принимать в переменную значение неправильно типа (например, строковое вместо числового);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

· В строковых переменных переменной длины -- "" (строка нулевой длины).

· В строковых переменных фиксированной длины -- строка данной длины с символами ASCII 0 (эти символы на экран не выводятся).



Задание переменных vba
Как в экселе создать документ


Узнать стоимость за 15 минут
  • Тип работы
  • Часть диплома
  • Дипломная работа
  • Курсовая работа
  • Контрольная работа
  • Реферат
  • Научно - исследовательская работа
  • Отчет по практике
  • Ответы на билеты
  • Тест/экзамен online
  • Монография
  • Эссе
  • Доклад
  • Компьютерный набор текста
  • Компьютерный чертеж
  • Рецензия
  • Перевод
  • Репетитор
  • Бизнес-план
  • Конспекты
  • Проверка качества
  • Единоразовая консультация
  • Аспирантский реферат
  • Магистерская работа
  • Научная статья
  • Научный труд
  • Техническая редакция текста
  • Чертеж от руки
  • Диаграммы, таблицы
  • Презентация к защите
  • Тезисный план
  • Речь к диплому
  • Доработка заказа клиента
  • Отзыв на диплом
  • Публикация статьи в Вак
  • Публикация статьи в Scopus
  • Дипломная работа MBA
  • Повышение оригинальности
  • Шрифт, pt
  • 12 pt
  • 14 pt
  • Другой
Прикрепить файл
Заказать