Вход/Регистрация
VBA для чайников
вернуться

Каммингс Стив

Шрифт:

(такой список должен храниться в массиве строк; массивы будут рассматриваться в главе 13).

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

Но если предположить, что оригинальное имя содержится в переменной str-Старая, то поможет следующий трюк:

strНовая = Left(strСтарая, Len(strСтарая) - 7)

Если бы VBA читал книги вместо программного кода, я объяснил бы ему, что эти действия можно выполнить следующим образом.

1. Сначала вызывается функция Len, которая вычисляет длину оригинальной строки.

2. Из результата, полученного в п. 1, вычитается 7, поскольку каждое из званий занимает семь символов в конце строки (включая запятую и пробел).

В результате получится число, которому должна быть равна длина новой строки.

3. Вызывается функция Left, использующая вычисленную длину в качестве значения второго аргумента.

Функция Left читает столько символов, сколько задано вторым аргументом, из строки, указанной первым аргументом, возвращая только эти прочитанные символы.

4. Новая, более короткая строка, возвращенная функцией Left, присваивается переменной

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

strMMfl = Mid (strHoBafl, InStr (str-Новая, ",") + 2)

Функция Mid извлекает символы из любого места в строке, которую вы укажете в виде аргумента. Второй же аргумент этой функции говорит, с какого места в этой строке следует начать извлечение символов. В данном случае этот аргумент представляет собой выражение, состоящее из функции InStr плюс 2.

Функция InStr ищет в заданной строке (первый аргумент) другую строку (второй аргумент).

В данном случае второй аргумент - это запятая, которая в списке следует за фамилией. Значение, которое возвращает InStr, соответствует номеру позиции в первой строке, где встречается вторая строка, - теперь вы знаете, где заканчивается фамилия.

К значению, возвращенному функцией InStr, добавляется 2, чтобы пропустить запятую и следующий за ней пробел и найти позицию, с которой начинается имя. Теперь функция Mid извлечет символы, начиная с этого места и до конца строки (поскольку не указан третий, необязательный аргумент длина).

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

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

После таблицы несколько наиболее важных команд, относящихся к датам и времени, рассматриваются подробнее.

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

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

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

Имя

Тип

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

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(дата)

Функция

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

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

Функция Now возвращает текущие системные дату и время в формате переменной типа Data, как, например, в случае datЛовиМомент = Now.

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

  • Читать дальше
  • 1
  • ...
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: