Каммингс Стив
Шрифт:
* Методы встроенных объектов. В этой группе курьезно выглядит метод Print, единственный для объекта Debug и предназначенный для направления вывода в окно немедленного выполнения команд (окно Immediate) в редакторе Visual Basic. Для этого используются операторы типа
Debug.Print (strПосланиеМарсианина)
* Лично я не вижу никаких преимуществ в связывании команды Print с объектом, но сам по себе метод Print оказывается очень полезным. Подробно он обсуждается в главе 14. Здесь же замечу, что, хотя VBA и не инкапсулирует файлы, как объекты, можно дополнительно установить программную надстройку, которая позволит управлять файлами и работать с их содержимым на основе объектно-ориентированного подхода (подробности - в главе 12).
В табл. 11.1 приводятся некоторые из встроенных VBA-команд, взятые для примера и относящиеся к различным категориям (операторы, функции, методы). Дальше в главе будут рассматриваться чаще всего используемые встроенные команды.
Таблица 11.1. Примеры встроенных функций, операторов и методов
Команда | Тип | Выполняемые действия |
Randomize | Оператор | Инициализирует генератор случайных чисел |
Sqr ( число) | Функция | Возвращает значение квадратного корня числа |
Format ( строка ) | Функция | Форматирует строку в соответствии с заданным описанием |
Date | Оператор | Устанавливает системную дату |
Date | Функция | Возвращает текущую системную дату |
Err . Raise | Метод объекта Err | Генерирует ошибку выполнения с заданным кодом данных |
Форматирование данных
VBA-функции Format форматируют данные любого из встроенных типов по указанному образцу для отображения их на экране или на печати. С помощью этих функций очень просто отображать значения дат в виде короткого (19.12.99), среднего (19-дек-99) или длинного формата даты (19 декабря 1999 г.), или любого из нескольких других предлагаемых VBA форматов (VBA хранит значения дат в виде совершенно неудобоваримых чисел). Подобные трюки можно выполнять и с числовыми значениями, и со строками. На самом деле Format конвертирует предложенное вами значение в новую строку, добавляя в нее символы, необходимые для представления данных в нужном виде.
Функция Format предлагается и в VBA 5, и в VBA 6, однако VBA 6 может похвастать еще четырьмя новыми родственными функциями, каждая из которых предназначена для своего конкретного типа данных.
Работа с функцией Format
Функция Format, имеющаяся в VBA 5 и VBA 6,- невероятно гибкая. Она применима практически к любым типам данных и имеет настраиваемый вывод- если ни один из встроенных форматов не подойдет, вы можете создать свой, какой пожелаете.
В упрощенной форме синтаксис функции Format выглядит так (здесь опущены два необязательных и редко используемых аргумента, относящихся к датам, - о них вы можете узнать из справки VBA):
Format(выражение,"формат")
Аргумент выражение должен содержать выражение, представляющее число, строку или дату, которые вы хотите форматировать (т.е. отобразить в подходящей форме). Ясно, что этот аргумент обязателен.
Аргумент формат и является тем аргументом, который выполняет реальную работу. Как видно из следующего примера, аргумент формат нужно заключить в кавычки.
Чтобы использовать функцию Format, присвойте ее переменной либо свойствам Value или Caption элемента управления в форме. Например, оператор
lblDateMessage.Caption = "Сегодня " & _
Format(Now, "Long Date")
отображает текст "Сегодня 19 март 2001 г." в виде текста надписи элемента управления lblDateMessage (в предположении, что сегодня 19 марта 2001 года).
Использование встроенных форматов для функции Format
В табл. 11.2 приводятся именованные встроенные форматы для данных различных типов в VBA. Используйте их как аргумент в функции Format. He забудьте при этом заключить в кавычки имя выбранного вами формата (из первого столбца таблицы).
Таблица 11.2. Именованные форматы для использования с функцией Format
Имя формата | Описание вывода | Пример (соответствует установке языка Русский в панели управления) |
Числовой | ||
General Number | Число без выделения разрядов тысяч | 2001,5599 |
Currency | Число с выделением разрядов тысяч и с двумя знаками после десятичного разделителя, а также с символом денежной единицы | 2 001,56р. |
Fixed | Как минимум один знак слева и два знака справа от десятичного разделителя (без выделения разрядов тысяч) | 3390,10 |
Standard | Число с выделением разрядов тысяч и как 1 минимум одним знаком слева и двумя знаками справа от десятичного разделителя | 323,45 |
Percent | Число, умноженное на 100, с двумя знаками справа от десятичного разделителя и знаком процентов (%) справа | 12,54% |
Scientific | Число в стандартном виде для научных расчетов | 1,23Е+02 |
Логический | ||
Yes/No | Нет, если значение равно 0, иначе Да | Да |
True/False | Ложь, если значение равно 0, иначе Истина | Истина |
On/Off | Выкл, если значение равно 0, иначе Вкл | Вкл |
Дата/время | ||
General Date | Дата и/или время, в зависимости от значения, представленного в соответствии с установками в панели управления | 15.03.9817:27:45 |
Long Date | Дата в виде, заданном в панели управления для полного формата даты | 15 Март 2001 г. |
Medium Date | Дата в виде, заданном в панели для среднего формата даты | управления 15-мар-01 |
Short Date | Дата в виде, заданном в панели управления для краткого формата даты | 15.03.01 |
Long Time | Время (часы, минуты и секунды) в виде, заданном в панели управления для полного формата времени | 17:27:45 |
Medium Time | Время (часы и минуты) в 12-часовом формате с метками до/после полудня, заданными в панели управления | 05:27 |
Short Time | Время (часы и минуты) в 24-часовом формате | 17:27 |
Можно создать свои собственные форматы, собрав их из символов, имеющих специальные значения для аргумента формат. Например, чтобы отобразить строки текста символами верхнего или нижнего регистров, используйте функцию Format с аргументами ">" или "<" соответственно. За неимением места я не могу описывать все эти специальные символы- вы найдете их самостоятельно, открыв сначала раздел Format Function (функция Format ) в файле справки VBA, а затем щелкнув на ссылке See Also (см. также) и просмотрев разделы User-defined Formats (пользовательские форматы). Но чтобы не совсем вас разочаровывать, я привожу следующий пример с парой пользовательских форматов в действии. Кроме того, этот же пример иллюстрирует использование еще одной встроенной функции VBA - Iif: