Чтобы при сравнении использовался другой, интуитивно более понятный метод, поместите в раздел объявлений модуля оператор Option Compare Text.
В результате этого сравнение строк будет выполняться по алфавиту без учета регистра букв (но все равно будет считаться, что буквы с акцентами имеют более высокие коды, чем соответствующие им буквы без акцентов). В этом случае следующие выражения дадут в результате True (Истина):
"а" = "А"
"а" < "Z"
Сравнение строк разной длины
Но что будет, если придется сравнивать строки неравной длины? Если начало одной строки в точности совпадает с другой, более короткой строкой, то длинная строка считается больше короткой. Например:
"В горах, в пещере" > "В горах" дает в результате True (Истина).
Но если две строки различаются не только по длине, но и по содержанию в рамках сравнимой дойны, применяется общий критерий сравнения. Например.
"У меня двенадцать" > "У меня двадцать два" дает в результате True (Истина), поскольку буква е в слове двенадцать больше, чем а в слове двадцать, несмотря на то, что левая часть выражения короче правой.
Как правило, с помощью Like строка сравнивается не с конкретным набором символов, а с заданным образцом, в котором используются замещающие символы, когда нужно убедиться, что строка попадает (или не попадает) в некоторый класс строк. У меня нет возможности вдаваться здесь в детали, но вы должны знать, что сравнение такого типа в VBA есть и что это довольно мощное средство для обработки текстовых данных.
Операторы сравнения в программном коде
Результат выполнения сравнения можно сохранить в переменной (обычно для этого используется переменная типа Boolean) с помощью стандартного оператора присваивания: boolTheAnswerIs = 5 > 4
Поскольку 5 больше, чем 4, результатом сравнения будет True (Истина), а поэтому VBA присвоит переменной boolTheAnswerIs значение True.
Ключевые слова True и False на самом деле встроенные числовые константы
VBA, соответственно представляющие значения -1 и 0. Результат сравнения можно присвоить любой числовой переменной.
Операции сравнения часто используются в условных операторах, чтобы принять решение о выполнении той или иной ветви программного кода:
If intP <= intQ Then
ЧтоТоНеТак ' вызов процедуры обработки ошибок
End If
Знак конкатенации, & (амперсанд), обозначает операцию соединения строк в одну. Его можно использовать со строками текста, строковыми переменными или любыми функциями, возвращающими строковые значения. Его можно использовать несколько раз, чтобы строить длинные строки из нескольких строковых значений, как, например, здесь:
strA = "Вы ответили " & InputBox("Введите ответ:") & _
". Правильным ответом было " & strAnswer & "."
В результате выполнения этого оператора strA может содержать, например, "Вы ответили Португалия. Правильным ответом было Испания", или какую-то подобную строку.
При составлении большой строки из маленьких не забывайте добавлять в строку результат необходимые пробелы и знаки пунктуации.
Дополнительные сведения о типах данных
В этом разделе приводятся рекомендации по поводу того, где и когда использовать различные типа данных VBA. При этом рассматриваются все типы данных, кроме двух. Тип данных Object, хотя и очень полезен, но достаточно сложный, поэтому отдельно обсуждается в главе 12. Пользовательские типы данных в настоящей книге не рассматриваются.
Преобразование типов данных
Типы данных существуют только для удобства программиста - VBA хранит всю свою информацию исключительно в цифровой форме. А поскольку это так, преобразование данных одних типов в другие не слишком большая проблема для VBA.
В VBA есть целый ряд встроенных функций для преобразования одних типов данных в другие. Эти функции рассматриваются в главе 11 и с их помощью вы можете управлять такими преобразованиями. Но важно знать, что всегда, когда это следует из контекста, VBA автоматически конвертирует данные к подходящему типу. Например, если в выражении участвуют строка, состоящая только из цифр, и числовое значение, связанные знаком операции +, то к числовому значению будет прибавлено число, определяемое строкой. Точно так же, если присвоить целой переменной значение с десятичными знаками, то VBA автоматически округлит это значение.
Часто такие автоматические преобразования типов вполне соответствуют тому, что вам нужно. Но основная проблема здесь состоит в том, что даже если вы позаботитесь о явном объявлении типов данных для всех своих переменных, вероятность появления ошибок не исчезает как раз из-за стремления VBA предугадать ваши желания.
Читать дальше