|
|||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Операции и функции для работы с символьным даннымиЕдинственная операция, применяемая при работе со строками - конкатенация. Зато встроенных функций для работы достаточно много (таблица 5.): Функции для работы со строками Таблица 5.
Сравнение двух строк. Функция StrComp возвращает значение типа Variant (Integer), представляющее результат сравнения строк. StrComp(string1, string2[, compare]) Синтаксис функции StrComp содержит следующие аргументы: string1 - Обязательный. Любое допустимое строковое выражение. string2 - Обязательный. Любое допустимое строковое выражение. compare - Необязательный. Указывает способ сравнения строк. Аргумент compare может быть опущен или иметь значение 0, 1 или 2. Чтобы выполнить двоичное сравнение, следует указать 0 (это значение используется по умолчанию). Чтобы выполнить посимвольное сравнение без учета регистра, следует указать 1. Если аргумент compare опущен, способ сравнения строк определяется значением параметра инструкции Option Compare. Возвращаемые значения string1 меньше чем string2 -1 string1 равняется string2 0 string1 больше чем string2 1 Пример: Dim MyStr1, MyStr2, MyComp MyStr1 = "ABCD": MyStr2 = "abcd" ' Определяет переменные. MyComp = StrComp(MyStr1, MyStr2, 1) ' Возвращает 0. MyComp = StrComp(MyStr1, MyStr2, 0) ' Возвращает -1. MyComp = StrComp(MyStr2, MyStr1) ' Возвращает 1. Выбор типа сравнения строк. Применяется на уровне модуля для задания используемого по умолчанию способа сравнения строковых данных. Option Compare {Binary | Text} Инструкция Option Compare при ее использовании должна находиться в модуле перед любой процедурой и указывает способ сравнения строк (Binary или Text) для модуля. Если модуль не содержит инструкцию Option Compare, по умолчанию используется способ сравнения Binary Инструкция Option Compare Binary задает сравнение строк на основе порядка сортировки, определяемого внутренним двоичным представлением символов. В Microsoft Windows порядок сортировки определяется кодовой страницей символов. В следующем примере представлен типичный результат двоичного порядка сортировки: A < B < E < Z < a < b < e < z < Б < Л < Ш < б < л < ш Инструкция Option Compare Text задает сравнение строк без учета регистра символов на основе системной национальной настройки. Тем же символам, что и выше, при сортировке с инструкцией Option Compare Text соответствует следующий порядок: (A=a) < (B=b) < (E=e) < (Z=z) < (Б=б) < (Л=л) < (Ш=ш) Преобразование строк. Функция StrConv имеет следующи синтаксис: StrConv(string, conversion) Здесь string - строковое выражение, которое следует преобразовать, conversion - значение типа Integer, Сумма значений, указывающих тип преобразования, которое следует выполнить. vbUpperCase 1 Преобразование строки к верхнему регистру. vbLowerCase 2 Преобразование строки к нижнему регистру. vbProperCase 3 Преобразование первой буквы каждого слова в строке в прописную. Вместо одной этой функции можно применять функции Lcase, Ucase. Lcase - возвращает значение типа String, представляющее строку, преобразованную к нижнему регистру. LCase(строка) Обязательный аргумент строка представляет любое допустимое строковое выражение. Если строка имеет значение Null, возвращается значение Null. К нижнему регистру преобразуются только прописные буквы; строчные буквы и прочие символы остаются неизмененными. Ucase - возвращает значение типа Variant (String), содержащее строку, преобразованную к верхнему регистру. UCase(строка) Обязательный аргумент строка представляет любое допустимое строковое выражение. Если строка имеет значение Null, возвращается значение Null. К верхнему регистру преобразуются только строчные буквы; прописные буквы и прочие символы остаются неизменными. Создание строк, содержащих повторяющиеся символы. Для создания таких строк применяют функции Space и String. Функция Space(число) формирует строку, а обязательный аргумент число указывает нужное число пробелов в строке. Ее удобно использовать для форматирования и очистки данных в строках фиксированной длины. Функция String(number, character) содержит следующие аргументы: number - Значение типа Long. Длина возвращаемой строки. character - Значение типа Variant. Код символа или строковое выражение, первый символ которого используется при создании возвращаемой строки. Определение длины строки. При работе со строками переменной длины удобно использовать функцию Len(строка), возвращую значение типа Long, содержащее число символов в строке Выравнивание строки. Оператор Lset - выравнивает строку по левому краю строковой переменной или копирует переменную одного определяемого пользователем тип в переменную другого типа, также определенного пользователем. LSet переменная = строка LSet имяПеременной1 = имяПеременной2 Здесь строка - строковое выражение, которое следует выровнять по левому краю строки переменная. Все оставшиеся символы в строке переменная LSet заменяет на пробелы. Если строка длиннее, чем переменная, LSet копирует в переменную столько начальных символов строки, сколько в ней поместится. Rset - то же самое, но выравнивает строку по правому краю строковой переменной. Если длина строки переменная больше, чем строка, инструкция RSet заменяет все оставшиеся символы вплоть до начала строки переменная пробелами. Обработка строк. Для разнообразной обработки строк применяются функции InStr, Left, LTrim, Mid, Right, RTrim, Trim. InStr - Возвращает значение типа Long, указывающее позицию первого вхождения одной строки внутри другой строки. InStr([start, ]string1, string2[, compare]) Синтаксис функции InStr содержит следующие аргументы: start - числовое выражение, задающее позицию, с которой начинается каждый поиск. Если этот аргумент опущен, поиск начинается с первого символа строки. Указание аргумента start является обязательным, если указан аргумент compare. string1 - Строковое выражение, в котором выполняется поиск. string2 - Искомое строковое выражение. Пример: Возвращения числа, обозначающее положение символа (рис. 30.). Рис. 30. Результат программы применения функции InStr. compare - Указывает способ сравнения строк. Аргумент compare может быть опущен или иметь значение 0 или 1. Чтобы выполнить двоичное сравнение, следует указать 0 (это значение используется по умолчанию). Чтобы выполнить посимвольное сравнение без учета регистра, следует указать 1. Если аргумент compare опущен, способ сравнения строк определяется значением параметра инструкции Option Compare. Возвращаемые значения string1 является пустой строкой 0 string2 является пустой строкой start string2 не найдена 0 string2 найдена в string1 Позиция обнаруженной подстроки start > string2 0 Пример: Сравнение и поиск строк в спредложении (рис. 31.). Left - возвращает значение типа String, содержащее указанное число первых символов строки. Left(string, length) Здесь string - строковое выражение, из которого извлекаются символы. length - значение типа Variant (Long), числовое выражение, указывающее число возвращаемых символов. Если 0, возвращается пустая строка (""). Если значение length больше либо равняется числу символов в строке string, возвращается вся строка.
Рис. 31. Результат программы сравнения строк. Для определения числа символов в строке string следует использовать функцию Len. Пример: Определение длины строки (рис. 32.). Рис. 32. Результат программы определения длины строки. Ltrim, Rtrim, Trim - возвращают значение типа String, содержащее копию строки, из которой удалены пробелы, находившиеся в начале строки (LTrim), в конце строки (RTrim) или в начале и конце строки (Trim). LTrim(строка), RTrim(строка), Trim(строка) Обязательный аргумент строка представляет любое допустимое строковое выражение. Пример: Удаление ненужных строк (рис. 33.). Рис. 33. Результат программы удаления строк. Mid - Возвращает значение типа Variant (String), содержащее указанное число символов строки. Mid(string, start[, length]) Здесь string - строковое выражение, из которого извлекаются символы, start - значение типа Long. Позиция символа в строке string, с которого начинается нужная подстрока. Если start больше числа символов в строке string, функция Mid возвращает пустую строку (""). Пример: Возращение пустой строки (рис. 34.). Рис. 34. Результат программы применения функции Mid. length - значение типа Variant (Long). Число возвращаемых символов. Если этот аргумент опущен или превышает число символов, расположенных справа от позиции start, то возвращаются все символы от позиции start до конца строки. Right - Возвращает значение типа String, содержащее указанное число последних символов строки. Right(string, length) Здесь string - строковое выражение, из которого извлекаются символы. length - значение типа Variant (Long). Числовое выражение, указывающее число возвращаемых символов. Если 0, возвращается пустая строка (""). Если превышает число символов в строке string, возвращается вся строка. Работа с кодами ASCII. Asc - Возвращает значение типа Integer, представляющее код символа для первого символа строки. Asc(строка) Аргумент строка является любым допустимым строковым выражением. Если строка не содержит символов, возникает ошибка выполнения. Возвращаемые значения лежат в диапазоне 0 - 255. Chr - возвращает значение типа String, содержащее символ, соответствующий указанному коду символа. Chr(кодСимвола) Обязательный аргумент кодСимвола является значением типа Long, определяющим символ. Коды 0-31 соответствуют стандартным управляющим символам ASCII. Например, Chr(10) возвращает символ перевода строки. Обычным диапазоном значений аргумента кодСимвола является интервал 0-255. Пример 1: Заменить в строке буквы А, Б, В на 1, 2, 3 соответственно Sub пример6() Dim s As String, sn As String, t As String Dim l As Integer, i As Integer Call read("g1", s) l = Len(s) For i = 1 To l t = Mid(s, i, 1) Select Case t Case "А": sn = sn + "1" Case "Б": sn = sn + "2" Case "В": sn = sn + "3" Case Else: sn = sn + t End Select Next i Call out("h1", sn) End Sub Пример 2: Из набора слов вывести только те, у которых одинаковые первые буквы. Sub пример7() Dim first() As String, s As String, n As Integer, i As Integer, k As Integer i = 0: k = 0 Do While Лист1.Range("g" & i+1).Text <> "" i = i + 1 s = Лист1.Range("g" & i).Text ReDim Preserve first(1 To i) first(i) = Left(s, 1) Loop Лист1.Range("h1", "h" & i).Clear For n = 1 To i If n <> i Then For k = n + 1 To i If first(k) = first(n) Then Лист1.Range("h" & n).Value = Лист1.Range("g" & n).Text Лист1.Range("h" & k).Value = Лист1.Range("g" & k).Text End If Next End If Next End Sub Контрольные вопросы 1. Перечислите операции для работы с символьными данными VBA? 2. Перечислите функции для работы с символьными данными VBA? 3. В чем отличие понятий функция и операция?
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.014 сек.) |