Функция StrComp

Задание3 Примеры использования функций VBA

Задание2. Создание переменной

Задание1

Создание окон сообщений и окон ввода.

Лабораторная работа №8

Изучите материалы лекций, проделайте все перечисленные примеры на практике. Продемонстрируйте выполнение преподавателю.

Самым простым способом создания переменной является использование ее в операторе VBA. При этом VBA создает переменную и резервирует память для переменной. Сохранение значения данных в переменной называется присваиванием переменной. Делается это с помощью оператора присваивания (=).

Например: Sum=120

Этот оператор сохраняет численное значение 120 в ячейке памяти, заданной переменной Sum.

Такое объявление переменной называется "неявным объявлением переменной" или "объявление переменной на лету". Все переменные, которые VBA создает подобным образом, имеют тип данных Variant.

Неявное объявление переменной может вызвать массу проблем во время отладки программного кода, поэтому, такой способ программирования не рекомендуется. В некоторых языках программирования вообще нельзя объявлять переменные неявным способом.

Поэтому, VBA предоставляет возможность выполнить явное объявление переменной. Это несет следующие преимущества:

Ускоряется выполнение кода;

Уменьшается количество потенциальных ошибок при написании кода;

Улучшается читабельность программного кода;

Нормализуется выделение заглавными буквами в имени переменной (т.е., если вы явно объявили имя переменной как "AllSumm", то при написании в теле кода этой переменной, как allsumm, автоматически произойдет замена на AllSumm)

Для явного объявления переменной используется оператор Dim (Dimension).

Синтаксис:

Dim name1 [, name2…]

nameN - любой допустимый идентификатор переменной.
Идентификатор - это имя, которое дается элементам в создаваемых процедурах и модулях, таким как переменные. Это обусловлено тем фактом, что создаваемые имена определяют конкретные участки памяти (имя переменной), группы инструкций (макрос или процедура).

Например:
Dim MyValue
Dim Value_1, Value_2

Все переменные, созданные подобным образом, являются переменными типа Variant.

Когда VBA создает новую переменную, эта переменная инициализируется (переменной присваивается некоторое значение "по умолчанию"):

строки инициализируются пустыми строками;

числа - значением 0;

переменные типа Boolean - False;

даты - 30 декабря 1899

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

Типизированные переменные

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

Типизированные переменные ускоряют выполнение кода программы;

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

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

В программах, использующих типизированные переменные, легче обнаружить некоторые ошибки программистов;

Не возникает проблем с датами.

Тип переменной объявляется в том же операторе, который используется для объявления самой переменной. Можно объявлять типизированную переменную либо при неявном объявлении, либо при явном - с помощью оператора Dim.

Для объявления переменной и ее типа с помощью оператора Dim необходимо добавить ключевое слово As перед именем переменной, а затем ввести имя типа данных для этой переменной.

Синтаксис:

Dim varname_1 [As type1] [, varname_2 [As type2]..]

Varname_N - любое допустимое имя переменной

Type_N - любое из имен типов данных VBA

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

Создаваемые строковые переменные по умолчанию являются строками переменной длины, т.е. они изменяют свою длину, в зависимости от длины строки, сохраняемой переменной. Но, иногда может понадобиться использовать строку фиксированной длины. Такие строки всегда имеют одну и ту же длину. Они полезны, если необходимо обеспечить, чтобы текст, сохраненный в строковой переменной, всегда содержал одно и то же число символов.

Синтаксис:

Dim varname As String * N

Varname - любое допустимое имя переменной

N - целое число, указывающее длину строки

Область действия переменных

Любая переменная имеет свою область действия.

Термин область действия относится к области процедуры или модуля VBA, где данная переменная, процедура или другой идентификатор, являются доступными.

Переменные, процедуры и идентификаторы, которые доступны только в процедуре, имеют область действия процедурного уровня, а те, которые доступны для всех процедур в модуле, имеют область действия модульного уровня.

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

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

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

Если вы хотите всегда использовать только явное объявление переменных, то для таких целей VBA предоставляет команду Option Explicit. При использовании Option Explicit VBA требует объявления всех переменных перед их использованием.

В настройках редактора VBA можно указать, чтобы команда Option Explicit автоматически включалась в новый модуль.

Удаление ненужных символов

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

В VBA имеются три функции, предназначенные для удаления начальных и конечных пробелов из строки: LTrim, RTrim, Trim. Следует иметь ввиду, что эти функции на самом деле не изменяют исходную строку, а возвращают копию строки с удаленными лишними пробелами.

Определение длины строки

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

Следует быть внимательными со строками фиксированной длины. Поскольку строка фиксированной длины имеет всегда одну и ту же длину, функция Len всегда возвращает объявленную длину строки, независимо от фактической длины строки. Например, если в строковой переменной фиксированной длины StrokeName, имеющей длину 15 символов, фактически находится слово "солнце", то функция Len(StrokeName) возвратит результат 15. Чтобы в таком случае узнать фактическую длину строки (в нашем случае - 6), необходимо использовать следующую комбинацию функций: Len(Trim(StrokeName)).

Сравнение и поиск строк

В VBA имеются две функции, помогающих сравнивать строки: StrComp, InStr.

Синтаксис

StrComp (String1, String2 [, Compare])

String1, String2 - любые два строковых выражения, которые необходимо сравнивать.

Compare - необязательный аргумент, может быть любой из следующих предопределенных констант (если он опускается, то используется текущая установка Option Compare):

vbBinaryCompare - бинарное сравнение двух строк;

vbTextCompare - текстовое сравнение двух строк;

vbDatabaseCompare - используется только в Microsoft Access.

При выполнении StrComp возвращается одно из следующих значений:

-1, если String1 меньше String2;

0, если String1 и String2 равны;

1, если String1 больше String2.

В вышеприведенном листинге в текстовом режиме сравниваются две строки: "Строка по умолчанию" и " Строка по умолчанию". Результат сравнения = 1, т.е. "Строка по умолчанию" больше, чем " Строка по умолчанию".

Поэкспериментируйте с разнообразными строками для лучшего понимания работы функции StrComp.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: