VBA для чайников
Шрифт:
Таблица 11.8. Финансовые функции VBA
Функция | Возвращаемое значение |
DDB(стоимость, остаток, период) | Амортизация имущества за данный период, используя метод двойного процента со снижающегося остатка |
FV(ставка, кпер, плата, сумма) | Будущее значение вклада на основе периодических постоянных платежей и постоянной процентной ставки |
Impt(ставка, период, кпер, сумма) | Величина выплаты за указанный период на основе периодических постоянных платежей и постоянной процентной ставки |
IRR(значения) | Внутренняя скорость оборота для ряда последовательных операций с наличными, представленными числовыми значениями |
MIRR(значения, фин_ставка, реинвест_ставка) | Модифицированная внутренняя скорость оборота средств для ряда последовательных периодических операций с наличными |
Nper(ставка, платеж, сумма) | Общее количество периодов выплаты для данного вклада на основе периодических постоянных выплат и постоянной процентной ставки |
NPV(ставка, | Чистый текущий объем вклада, используя учетную ставку, а также объемы будущих платежей (отрицательные значения) и поступлений (положительные значения) |
Pmt(ставка, кпер, сумма) | Величина выплаты по ссуде на основе постоянных выплат и постоянной процентной ставки |
PPmt | Платежи по процентам за данный период на основе периодических постоянных выплат и постоянной процентной ставки |
РУ(ставка, кпер, плата) | Текущий объем вклада на основе периодических постоянных платежей и постоянной процентной ставки |
Rate(кпер, плата, сумма) | Процентная ставка за один период при выплате ренты |
SLN(стоимость, остаток, период) | Величина непосредственной амортизации имущества за один период |
SYD(стоимость, остаток, жизнь, период) | Годовая амортизация имущества для указанного периода |
Даже после всех приведенных выше таблиц и обсуждений, обзор встроенных команд VBA остается далеко не полным. Некоторые из команд будут обсуждаться в следующих главах, но эту главу я завершу еще одной таблицей с множеством команд, которые вполне могут вам пригодиться.
Таблица 11.9. Различные встроенные команды VBA
При задании аргументов не забывайте заключать буквальные значения таких параметров, как путь, в кавычки.
Имя | Функция или оператор | Выполняемые действия (для операторов) и возвращаемые значения (для функций) |
Работа с файлами | ||
ChDir (путь) | Оператор | Изменяет текущий каталог (папку), но не активный диск |
ChDrive(имя диска) | Оператор | Изменяет активный диск |
CurDir | Функция | Текущий путь (диск и имя каталога) в виде строки |
Dir(путь) | Функция | Имя первого файла или каталога, соответствующего аргументу путь, который может содержать подстановочные символы |
FileCopy источник, цель | Оператор | Копирует дисковый файл источник В цель (может включать путь, имя файла или и то, и другое) |
FileDateTime(путь) | Функция | Значение типа Date с датой и временем создания или последнего изменения файла, заданного аргументом путь |
FileLen(путь) | Функция | Длина (в байтах) файла заданного аргументом путь |
GetAttr(путь) | Функция | Целое значение, представляющее атрибуты файла или папки, заданных аргументом путь |
Kill путь | Оператор | Удаляет один или больше файлов с диска (аргумент путь может содержать подстановочные символы) |
MkDir путь | Оператор | Создает новый каталог |
Name старый путь As новый путь | Оператор | Переименовывает и/или перемещает дисковый файл, каталог или папку |
RmDir путь | Оператор | Удаляет каталог |
SetAttr путь, атрибуты | Оператор | Устанавливает заданные атрибуты дисковому файлу. Аргумент атрибуты задает числовое значение, являющееся суммой устанавливаемых атрибутов. VBA обеспечивает именованные константы для каждого из атрибутов |
Разное | ||
AppActivate название, ожидание | Оператор | Активизирует другое выполняемое приложение. Если необязательный аргумент ожидание имеет значение True, то VBA будет ждать, пока ваша программа не получит фокус ввода |
Beep | Оператор | Извлекает звук с помощью громкоговорителя компьютера |
Choose(индекс, вариант1, вариант2, ... варианты ) | Функция | Значение объекта из списка аргументов вариант1, вариант2, ... варианты, определяемого аргументом индекс (индекс должен задавать число) |
DoEvents | Функция | Позволяет Windows обрабатывать другие события, пока выполняется ваша программа. В VBA эта функция всегда возвращает 0, поэтому нет необходимости приписывать ее значение переменной - используйте ее как оператор |
Environ (строка) Environ (число) | Функции | Содержимое переменной окружения, заданной строкой с именем или числом, определяющим позицию |
RGB(красный, зеленый, синий) | Функция | Целое число, представляющее RGB-значение цвета, заданного компонентами красный, зеленый, синий (используйте это значение для установки цветовых свойств объектов) |
Randomize | Оператор | Инициализирует генератор случайных чисел |
Rnd(число) | Функция | Случайное значение; аргумент число необязателен |
SendKeys строка, ожидание | Оператор | Пересылает заданную строкой последовательность символов в активное окно, как будто эти символы введены с клавиатуры. Если необязательный аргумент ожидание имеет значение True, то выполнение программы не продолжится, пока последовательность символов не будет обработана |
Работа с реестром Windows | ||
Shell (путь) | Функция | Пытается выполнить программу, заданную аргументом путь. В случае успеха возвращает число, представляющее идентификатор программы, в противном случае возвращает 0 |
DeleteSetting Оператор имя_приложения, раздел, параметр | Удаляет элемент реестра | |
Get All Settings (имя_приложения, раздел) | Функция | Значение типа Variant, содержащее список всех установок для указанного раздела приложения в реестре Windows (в виде двумерного массива) |
Get Setting (имя_приложения, раздел, параметр) | Функция | Значение параметра из указанного раздела приложения в реестре Windows |
SaveSetting имя_приложения, раздел, параметр, значение | Оператор | Сохраняет значение в реестре |
Форматирование вывода | ||
Spc(число) | Функция | Не возвращает никаких полезных значений, используется для размещения указанного числа пробелов в потоке вывода оператора Print # или метода Debug.Print |
Tab(столбец) | Функция | Не возвращает никаких полезных значений, смещает поток вывода оператора Print # или метода Debug. |
Работа с переменными | ||
IsDate (переменная) IsNumeric(переменная) IsObject(переменная) IsArray(переменная) IsNull(переменная) IsEmpty(переменная) | Функции | True, если переменная имеет соответствующий тип или содержит значение соответствующего типа; иначе False |
Len (переменная) | Функция | Число байтов, необходимое для хранения информации, помещенной в переменную |
TypeName (переменная) | Функция | Строка, представляющая тип переменной |
VarType (переменная) | Функция | Целое число, представляющее подчиненный тип переменной |
Глава 12. Объектно-ориентированное программирование.
В этой главе ...
~ Концептуализация объектов
~ Понимание свойств, методов и событий - главных компонентов VBA-объектов
~ Работа с объектными моделями
~ Использование форм как объектов
~ Выяснение и установка свойств объектов
~ Вызов методов
~ Использование ссылок на объект для идентификации объекта, с которым нужно работать
~ Присваивание переменным ссылок на объект
~ Создание своих собственных объектов с помощью модулей классов
~ Эффективное использование объектов с помощью операторов For Each ... Next и With
Главным преимуществом VBA является статус объектно-ориентированного средства разработки приложений. Понимание объектов лежит в основе программирования в VBA, особенно когда дело касается создания пользовательских диалоговых окон и использования возможностей ведущего VBA-приложения. В этой главе мы сначала очертим объектное поле на уровне понятий, а затем займемся приемами программирования с использованием объектов. Объекты стали неотъемлемыми элементами ландшафта VBA.
Именно через объекты вы получаете доступ к функциональным возможностям того VBA приложения, в котором работаете. Точно так же вы можете получить доступ к объектам других VBA-приложений и даже создать свои собственные объекты.
Что такое объект
Можно, конечно, привести формальное определение объекта в VBA, но, я думаю, проще объяснить понятие объекта с помощью нескольких неформальных примеров, используя их функциональные возможности.
Объекты как компоненты VBA-приложений
Начать изучение объектов лучше всего с рассмотрения их как частей VBA приложения и его документов. Любой элемент графики (shape) в Visio является объектом, равно как и любая связь (connect), установленная между двумя такими элементами графики (рис. 12.1). Точно так же объектами являются и слои, на которых размещаются элементы графики, и страницы, на которых располагаются слои. Объектом будет и сам документ, содержащий все эти страницы, слои, элементы графики и связи.
Рис. 12. l Примеры объектов VBA
Подобным образом к объектам Excel относятся ячейки, в которых размещаются данные и формулы, именованные диапазоны ячеек, диаграммы, украшающие многие документы, отдельные рабочие листы и целые рабочие книги. И во всех приложениях Microsoft Office - как и во многих других VBA-приложениях- меню и панели инструментов, а также пункты этих меню и кнопки в этих панелях инструментов тоже являются объектами.
Объекты VBA существуют в иерархии, в которой объекты одних типов содержатся в объектах других типов. Подобные иерархии объектов рассматриваются ниже, в разделе
"Что такое объектная модель", а пока что мы сконцентрируем внимание на обсуждении понятия индивидуального объекта.
Объекты на уровне понятий
Если вам трудно ассоциировать объекты с графическими элементами, ячейками рабочего листа или кнопками панели инструментов, представляйте себе объекты как материальные предметы. Вы же можете представить, как вырезаете ножницами из листа бумаги кружочек и наклеиваете его на другой лист бумаги. А в ячейку рабочего листа вы можете впечатать числа, на кнопке можете щелкнуть.
Правда, кроме таких конкретных объектов, VBA-приложения предлагают и более абстрактные.
* в Microsoft Excel объект CustomView задает пользовательское представление рабочей книги (в Excel пользовательское представление определяет внешний вил рабочей книги на экране и ее параметры печати).
* В Microsoft Word объект File Search представляет, как сказано в соответствующем разделе справки, "функциональные возможности диалогового окна Открытие документа (меню Файл)". Обратите внимание, этот объект представляет не само диалоговое окно, а его функциональные возможности.
* В Visio объект Style представляет атрибуты линий, текста и заливки для графических элементов.
* В VBA имеется несколько объектов, доступных для всех VBA-приложениЙ. Так, например, объект Collection представляет контейнер для переменных или других объектов, с которыми, независимо от типов этих объектов, предполагается работать как с единым целым.
Практическое определение объекта
Вы можете заметить, что порой представить объект VBA в материально осязаемом виде не так-то просто. Но это и к лучшему - чем дальше вы уходите от материализации объектов, тем свободнее будете себя чувствовать при работе со всем диапазоном доступных объектов.
Используемое программистами-практиками определение объекта оказывается совсем простым: объектом называется любая именованная сущность, имеющая
* свойства, т.е. установки, которые можно проверить и изменить;
* методы, т.е. действия, которые может выполнить объект, когда программа попросит об этом;
* события, т.е. ситуации, в которых объект оказывается и на которые может ответить заранее определенными для таких ситуаций действиями.
Если вам не чуждо чувство прекрасного, вы можете заметить, что для таких щедро одаренных созданий термин объект не очень-то подходит, поскольку эти объекты больше похожи на братьев наших меньших, чем на инертные лампы. У тигров и китов есть отличительные особенности глаз, конечностей и хвостов, а у объектов - свойства. Лошади и собаки умеют по команде выполнять разные трюки или убегать от опасности, а объекты имеют методы и события.