Строки
Строки в VBA заключаются в двойные кавычки " ". Переменные строкового типа описываются с помощью ключевого слова String. Dim S As String Длина строки ограничена только количеством свободной памяти. Однако следует иметь в виду, что некоторые операторы (например, MsgBox) имеют ограниченные поля для вывода. В них длинные строки могут выводиться не полностью. В ячейки таблицы записывается строка любой длины.
Строковые функции Для работы со строками в VBA используются только функции (процедур нет). LTrim(s) – возвращает строку, отбросив пробелы с левой стороны. RTrim(s) – возвращает строку, отбросив пробелы с правой стороны. Trim(s) – возвращает строку, отбросив пробелы с обеих сторон.
Строковые функции Left(s, n) – возвращает n левых символов строки s. Right(s, n) – возвращает n правых символов строки s. Mid(s, k, n) – возвращает n символов строки s начиная с k-го символа, если последний параметр пропущен, то функция возвращает весь остаток строки s, начиная с k-го символа. Возможно использование функции Mid в левой части операции присваивания. Например, S="abcdefg" Mid(s, 3, 2)="12" После выполнения этих операторов в строке s будет "ab12efg".
Строковые функции Len(s) – возвращает длину строки s. UCase(s) возвращает строку, заменив в ней все маленькие буквы на большие (как латинские, так и русские). LCase(s) возвращает строку, заменив в ней все большие буквы на маленькие (как латинские, так и русские).
Строковые функции Instr(s, s1) – возвращает номер позиции, с которой подстрока s1 встречается в строке s. Instr(p, s, s1) – возвращает номер позиции, с которой подстрока s1 встречается в строке s, начиная поиск с позиции p. Instr(p, s, s1, 1) – возвращает номер позиции, с которой подстрока s1 встречается в строке s, начиная поиск с позиции p, при этом, не различаются маленькие и большие буквы.
Строковые функции String(n,s) возвращает строку, состоящую из n повторений первого символа строки s. Например, String(5,"asd") возвратит "aaaaa". Space(n) возвращает строку, состоящую из n пробелов. Replace(s, s1, s2) возвращает строку, заменив в строке s все вхождения строки s1 на строку s2.
Строковые функции Val(s) – переводит строку в число. Эта функция существенно отличается от функций преобразования типов, которые уже были нами пройдены (CInt, CLng, CSng, CDbl). Функция Val пытается перевести в число ту часть строки, начиная с первого символа, которая может рассматриваться как число. Например Val("2.3") возвратит число 2.3 Val("2.3asd") возвратит число 2.3 Val(" ") возвратит число 2.354, т.к. вторая точка уже не может быть частью числа, а пробелы в данном случае не учитываются. Val("2,3") возвратит число 2, т.к. запятая не является разделителем целой и дробной части. Если же уже первый символ не может быть частью числа, то функция Val возвращает 0, например Val("asd")
Для конкатенации строк могут использоваться как символ плюс "+", так и амперсант "&". Однако имеются существенные различия в их работе. При использовании операции "+" операндами должны быть строки. Например S="abc"+"defg"+"12" В результате в переменной s будет "abcdefg12" Если среди операндов окажется не строковая величина, то будет ошибка, например S="abc"+"defg"+12 Здесь возникнет ошибка смешения типов.
Если же воспользоваться оператором "&", то произойдет преобразование численного типа к строковому S="abc" & "defg" & 12 И в переменной s будет "abcdefg12". При использовании оператора "&" все операнды преобразуются к строковому типу, а затем происходит их конкатенация. При этом если операндом является выражение, то сначала оно вычисляется, а потом происходит преобразование к строковому типу, например s = Sqr(4) & & "we" MsgBox s На экран будет выведено 210we.
Задачи Задание 1. С клавиатуры вводится строка. К каждому встретившемуся в ней восклицательному знаку приписать еще два. Результат вывести на экран. Задание 2. С клавиатуры вводится строка. Заменить в ней все слова dog на cat. Результат вывести на экран. Задание 3. Выделить с помощью мышки некоторый диапазон ячеек. Все ячейки, в которых в тексте встречается слово dog, закрасить зеленым цветом. Задание 4. Выделить с помощью мышки некоторый диапазон ячеек на первом листе. Переписать содержимое этих ячеек на второй лист в те же ячейки, заменив все встретившиеся слова dog на cat. Задание 5. С клавиатуры вводится строка. Переставить в ней слова таким образом, чтобы они располагались по алфавиту. Задание 6*. С клавиатуры вводится строка вида Ax^2+Bx+C=0, где A, B, C – вещественные числа, На месте любого плюса может стоять минус. Решить данное квадратное уравнение. Результат вывести на экран.