- •Часть VI
- •Глава 6.1 Создание приложений с помощью vba Возможности Visual Basic
- •Редактор Visual Basic (vbe)
- •Управление проектами в vbe
- •Глава 6.2 Основы программирования на ув6 Работа с переменными
- •Использование констант
- •Типы данных Object и Variant
- •Простейшие конструкции и операторы
- •Конструкции управления
- •Разновидности циклов
- •Работа с массивами
- •Работа со строками
- •Работа с датой и временем
- •Пользовательские процедуры и функции
- •Sub название процедуры (параметры) операторы
- •Function название функции (параметры) [As тип] операторы
- •Работа с записями
- •Работа с файлами
- •Input(число, номер)
- •Глава 6.3 Объектные модели
- •Объектная модель vba
- •Объектная модель Microsoft Office 2000
- •Объектная модель Microsoft Word 2000
- •Объектная модель Microsoft Excel 2000
- •Объектная модель Microsoft Access 2000
Работа со строками
Строками называются такие переменные, которые предназначены для работы с текстом или с какой-либо символьной информацией, обозначаемой в тексте программы в двойных кавычках. Для описания строковых переменных используется тип String.
Например:
Dim strA As String
stzA = "Строковая переменная"
Существует две разновидности строк:
Строки переменной длины. Данный тип используется по умолчанию, при этом длина объявленной строки может изменяться в
445
процессе выполнения программы, т. е. строка не занимает фиксированный объем памяти. В рассмотренном выше примере была использована строка переменной длины.
Строки постоянной длины. Используются в том случае, когда требуется заранее определить длину объявляемой строки, причем ее длина не может изменяться при выполнении программы, т. е. строка постоянной длины занимает фиксированный объем памяти. Объявляется строка постоянной длины так же, как и переменная, но после служебного слова String указывается количество символов (т. е. байтов), которые она будет занимать.
Например:
Dim strA As String * 20
strA = "Строковая переменная"
При выполнении первой из указанных команд для строки strA в памяти будет выделено место в 20 байт.
Следует отметить тот факт, что значение, присваиваемое строке переменной длины, может состоять как из меньшего, так и из большего количества символов, которые выделены для переменной. В первом случае в конец строки вместо недостающих символов автоматически будут добавлены пробелы, а во втором - удалятся лишние символы в конце строки.
Например:
Dim strA As String * 20
Dim strB As String * 10
Dim strC As String * 25
stxA = "Строковая переменная" ' Результат: "Строковая переменная"
strB = strA ' Результат: "Строковая "
strC = strA ' Результат: "Строковая переменная "
Для удаления лишних пробелов в начале и конце строки используются следующие функции: LTrim, RTrim или Trim. Например:
Dim strA As String
Dim strB As String
strA = " Строковая переменная "
strB = LTrim(strA) ' Результат; "Строковая переменная "
446
strB = RTrim(strA) ' Результат: " Строковая переменная"
strB = Trim(strA) ' Результат: "Строковая переменная"
Таким образом, LTrim удаляет все лишние пробелы в начале строки, RTrim - все пробелы в конце строки, и, наконец, функция Trim удаляет их как в начале, так и в конце строки.
При объединении двух и более строк используется операция, называемая конкатенацией, которая реализуется с помощью оператора &.
Например:
Dim strA As String
Dim strB As String
Dim strC As String
strA = "Строковая "
strB = "переменная"
strC = strA & strB ' Результат: "Строковая переменная"
Помимо оператора &, объединять строки можно также при помощи сложения: +, например:
strC = strA + strB
Такая операция будет верной в том случае, когда объединяемые величины являются строками. С другой стороны, при объединении числовой и строковой величин возникнет ошибка несовпадения типов.
Например:
Dim strA As String
Dim strB As Integer
Dim strC As String
strA = "X"
strB =1
strC = strA & strB ' •Результат: "XI"
strC = strA + strB ' Результат: ОШИБКА
447
В том случае, когда необходимо преобразовать величину числового типа в строку, следует использовать функцию Str, указывая в качестве параметра изменяемую переменную.
Например:
Dim strA As String
Dim curB As Currency
Dim strC As String
strA = "X = "
curB = 45.77
strC = strA + Str(curB) ' Результат: "X = 45.77"
Следует отметить, что в случае использования функции Str самый первый символ в получаемой строке отводится для знака преобразуемого числа. Следовательно, если переменная содержала положительное значение, то результатом операции преобразования будет строка, первым символом которой будет пробел. Поэтому в рассмотренном выше примере последнюю операцию можно записать следующим образом:
strC = strA + LTrim(Str(curB))
Для создания или добавления строки пробелов заданной длины используется функция Space, параметром которой является задаваемое количество пробелов, например:
Dim strA As String
Dim strB As String
Dim strC As String
strA = "Строковая"
strB = "переменная"
strC = strA & Space(5) & strB ' Результат; "Строковая переменная"
В данном примере при помощи функции Space между объединяемыми строками было добавлено 5 пробелов.
В языке Visual Basic существует возможность изменения строки таким образом, чтобы все используемые в ней буквы были преобразованы либо в верхний регистр (ВСЕ ПРОПИСНЫЕ), либо в нижний (все строчные). Для этих целей используются, соответственно, функции UCase и LCase.
448
Например:
Dim strA As String
Dim strB As String
strA = "Строковая Переменная"
strB = Ucase(strA) ' Результат: "СТРОКОВАЯ ПЕРЕМЕННАЯ"
strB = LCase(strA) ' Результат: "строковая переменная"
Для того чтобы заменить какую-либо часть строки или определенные символы, следует использовать функцию Replace. Например:
Dim strA As String
Dim strB As String
strA = "Строковая Переменная"
strB = Replace(strA, "овая", "а") ' Результат; " Строка Переменная"
strB = Replace(strA, "o", "O") ' Результат: " СтрОкОвая Переменная"
Кроме обязательных параметров - результирующей, заменяемой и заменяющей строк — могут также использоваться необязательные параметры, а именно: позиция в строке для начала замены и количество возможных изменений. Следует отметить, что при этом часть строки, которая расположена перед позицией начала замены, будет удалена.
Например:
strB = Replace(strA, "е", "Е", 10, 3) ' Результат: "ПЕрЕмЕнная"
strB = Replace(strA, "о", "О", 1, 1) ' Результат: " СтрОковая Переменная"
Для определения количества символов в строке применяется функция Len, при этом в качестве параметра указывается рассматриваемая строка.
Например:
Dim strA As String
Dim intA As Integer
strA = "Строковая переменная"
intA = Len(strA) ' Результат: 20
449
В том случае, когда параметром функции Len является переменная не строкового типа, тогда ее результатом будет являться объем памяти в байтах, который занимает эта переменная.
Например:
Dim bytA As Byte
Dim intA As Integer
Dim IngA As Long
Dim intR As Integer
intR = Len(bytA) ' Результат: 1
intR = Len(intA) ' Результат: 2
intR = Len(IngA) ' Результат: 4
Если в качестве параметра функции Len используется переменная типа Variant, содержимое которой можно представить в виде строки, то результатом будет количество символов, содержащееся в ней.
Например:
Dim vntA
Dim intA As Integer
vntA = -15.68
intA = Len(vntA) ' Результат: 6
Нередко в программе возникает необходимость выделения из строковой переменной той или иной ее части. В этом случае следует использовать одну из функций: Left, Right или Mid.
Left. Применяется для выделения подстроки в начале исходной строки. Формат данной функции следующий:
Left(строка, количество)
Результатом функции Left является строка с указанным количеством символов, находящаяся в начале исходной строки.
Right. Используется при выделении подстроки в конце исходной строки. Функция имеет такой формат:
Right(строка, количество)
Функция Right возвращает строку с указанным количеством символов, расположенную в конце исходной строки.
450
Mid. Применяется для выделения подстроки в середине исходной строки. Данная функция имеет следующий формат:
Mid(строка, номер, [количество])
Результатом функции Mid является строка с указанным количеством символов, находящаяся в исходной строке, начиная с определенного номера. Если количество символов не указывается, то строка выделяется до конца, т. е. в этом случае Mid будет аналогом функции Right, но с другим параметром
(Right; количество = "сколько выделять";
Mid: номер = "откуда начинать").
Ниже приводится пример использования рассмотренных функций.
Dim strA As String
Dim strB As String
strA = "Это строковая переменная"
strB = Left(strA, 3)
' Результат; "Это" strB = Right(strA, 10)
' Результат: "переменная" strB = Mid (strA, 5, 9)
' Результат; "строковая"
