Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МДК.01.03(2003).doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
646.66 Кб
Скачать

Объявление динамических массивов

Динамические массивы объявляться так:

?

1

2

3

' Обратите внимание, что границы не указываются

Dim arrOpen1() as Single

Dim arrOpen2()

Однако, использовать их после такого объявления пока ещё нельзя. Необходимо выделить память под массив. Особенность работы с динамическим массивом как раз состоит в том, что программист отвечает за его своевременное расширение (усечение) в памяти. Для этого существует специальный оператор, который имеет следующий синтаксис:

    ReDim [Preserve] varname(subscripts) [As Type]

Например:

?

1

ReDim arrOpen(5)

После этого оператора, вы можете использовать элементы массива arrOpen с 0-го по 5-й. Всё, что мы говорили про оператор option base и нижнюю границу, верно и для динамических массивов. Предположим, что вы сохранили информацию в элементах 0-5 и у вас поспела новая порция информации для элементов 6-11. Чтобы разместить в данном массиве новые элементы и не потерять старые, вы должны сделать следующее:

?

1

ReDim Preserve arrOpen(11)

то есть мы тут увеличиваем верхнюю границу массива и используем ключевое слово Preserve, чтобы во время этой операции не потерять текущее содержимое arrOpen, так как в противном случае (без слова Preserve) массив будет расширен, а память заполнена нулями. Вы также вправе вообще не декларировать массив оператором Dim, а сделать это впервые через ReDim и там же указать лип элементов. Но, если вы в первом ReDim (или Dim) указали определенный тип элементов, то в последующих операторах ReDim этот тип переопределён быть не может - возникнет ошибка на этапе компиляции проекта.

Работа со строками

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

Таблица 11.3. Операторы и функции для обработки строк

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

Оператор или функция

Тип

Выполняемые действия (для операторов) или возвращаемые значения (для функций)

Asc (строка)

Функция

Числовой код первого символа в строке

Chr (код_символа)

функция

Символ, соответствующий значению параметра код_символа

Filter ( массив_источник, эталон, включает, метод сравнения)

Функция (только в VBA6)

Массив, состоящий только из тех строк из массива источника, которые содержат эталон. Аргумент массив_истчник должен быть массивом строковых значений. Если необязательный аргумент включает равен False, то функция возвратит только строки, которые не включают эталон

Format (строка)

Функция

См. выше раздел "Форматирование данных"

Hex (число)

Функция

Строка, содержащая шестнадцатеричное представление числа

InStr (старт, строка1, строка2)

Функция

Число, соответствующее позиции строки 2 в строке 1; поиск начинается с позиции старт, этот аргумент не обязателен

InStrRev (строка 1, строка2, старт)

функция (только в VBA6)

Число, соответствующее позиции строки 2 в строке 1, считая с правого края строки 1; поиск начинается с позиции старт, этот аргумент не обязателен

Join (массив_строк, разделитель)

функция (только B VBA6)

Одна строка, комбинирующая все строки из массив_строк, который должен быть массивом строковых данных. По умолчанию Join вставляет пробел между строками, взятыми из массива строк, но можно задать и другой символ разделителя (символ необходимо заключить в кавычки)

Left (строка, длина)

Функция

Строка указанной длины из символов, взятых подряд из строки, задаваемой аргументом строка, начиная с левого края последней

Len (строка)

Функция

Число символов в строке

LCase (строка)

Функция

Копия строки, представленная символами нижнего регистра

LSet строковая_

переменная = строка

Оператор

Устанавливает значение строковой переменной, равное заданной строке, без изменения длины этой строковой переменной и с размещением заданной строки начиная с левого края переменной

LTrim (строка)

Функция

Новая строка, содержащая копию данной строки без пробелов в начале

Mid(строка, старт, длина)

Функция

Новая строка заданной длины из символов данной строки, взятых подряд, начиная с позиции старт

Mid(строковая переменная, старт, длина) = строка

Оператор

Начиная с позиции старт заменяет символами данной строки заданное аргументом длина число символов в строковой переменной

Oct(число)

Функция

Строка, содержащая восьмеричное представление числа

Replace(строка, найти, заменить, старт, число_замен, метод_сравнения)

Функция (только в VBA6)

Новая строка, получаемая в результате замены в заданной строке текста найти текстом заменить. Аргументы старт, число_замен и метод_сравнения не обязательны. Используйте число_замен, чтобы указать, сколько замен следует сделать, если текст найти встречается несколько раз (по умолчанию заменяются все случаи появления текста найти в строке)

Right (строка, длина)

Функция

Строка указанной длины из символов, взятых подряд из строки, задаваемой аргументом строка, начиная с правого края последней

RSet строковая_ переменсная = строка

Оператор

Устанавливает значение строковой переменной, равное заданной строке, без изменения длины этой строковой переменной и с размещением заданной строки с правого края переменной

RTrim (строка)

Функция

Новая строка, содержащая копию данной строки без пробелов в конце

Space (число)

Функция

Строка, состоящая из указанного числа пробелов

Split(строка, разделитель, предел, метод сравнения)

Функция (только B VBA6)

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

StrComp(строка1, строка2)

Функция

О, если две строки равны; -1,если строка 1 меньше, чем строка 2; 1, если строка! больше, чем строка 2 (о сравнении строк говорилось в главе 9)

StrConv(строка, метод перевода)

Функция

Новая строка, созданная на основе заданной указанным методом перевода

String(число, символ)

Функция

Строка, состоящая из заданного числа повторяющихся символов

StrReverse (строка)

Функция(только VBA 6)

Строка, содержащая символы заданной строки в обратном порядке

Trim(строка)

Функция

Новая строка, содержащая копию данной строки без пробелов в начале и конце

UCase(строка)

Функция

Копия строки, представленная символами верхнего регистра

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

Имя

Тип

Выполняемые действия (для операторов) или возвращаемые значения (для функций)

Date

Функция

Текущая системная дата

Date (дата)

Оператор

Устанавливает системную дату по значению аргумента дата

DateAdd (интервал, число, дата)

Функция

Новое значение даты, равное сумме исходной даты и казенного числа заданных интервалов даты или времени

DateDiff (интервал, дата1, дата2)

Функция

Число указанных интервалов даты или времени, помещающихся в отрезке времени между датами 1 и 2

DatePart (интервал, дата)

функция

Целое значение, представляющее указанный интервал даты

DateSerial (год, месяц, день)

Функция

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

DateValue (строка с датой)

Функция

Значение даты, соответствующее строке с датой

Day (дата)

Функция

Целое значение, соответствующее дню месяца, заданного датой

Hour (время)

Функция

Целое значение между 0 и 23 включительно, представляющее час суток, заданный указанным временем

Minute (время)

Функция

Целое значение между 0 и 59 включительно, представляющее минуты, заданные указанным временем

Month (дата)

Функция

Целое значение между 0 и 12 включительно, представляющее месяц, заданный указанной датой

MonthName (месяц, сократить)

Функция (только в VBA 6)

Строка, содержащая название месяца, соответствующего аргументу месяц, который должен быть числом от 1 до 12. Если необязательный аргумент сократить указан и равен True, то возвращаемая строка будет содержать сокращенное название месяца

NOW

Функция

Значение, представляющее текущие системные дату и время

Second(время)

Функция

Целое значение между 0 и 59 включительно, представляющее секунды, заданные указанным временем

Time

Функция

Значение, представляющее текущее системное время

Time (время)

Оператор

Устанавливает системное время по значению аргумента время

Timer

Функция

Число секунд, прошедших с полуночи

TimeSerial (часы, минуты, секунды)

Функция

Значение времени, заданное аргументами часы, минуты, секунды

TimeValue (строка_с_временем)

Функция

Значение времени, соответствующее строке со временем (вся информация о дате будет отброшена)

Weekday (дата)

Функция

Целое число, представляющее день недели, соответствующий указанной дате

WeekdayName

(день_не дели, сократить, первый день недели)

Функция

Строка, содержащая название дня недели, заданного (только в аргументом де н ь _ н е де л и, который должен

VBA 6) быть целым числом от 1 до 7. Если необязательный аргумент с о к р а т и т ь указан и равен True, то возвращаемая строка будет содержать сокращенное название дня недели. Нумерацию дней недели можно менять, задавая необязательный аргумент первый _ день _ недели равным константам типа vbMonday, vbTuesday и т.д.

Year(дата)

Функция

Целое число, представляющее год, соответствующий указанной дате