VBA для чайников
Шрифт:
Финансовые функции
VBA предлагает ряд функций для подсчета рублей-копеечек в выплатах по ссуде или возвращениях инвестиций. Я не имею здесь возможности обсуждать все эти функции, но собираюсь все же рассмотреть функцию Pmt для расчета выплат по ссуде.
Используйте функцию Pmt для расчета сумм, которые предстоит выплачивать вам (или которые должны выплачивать вам) по закладной с фиксированными процентами или какому либо другому займу. Вот формальный синтаксис функции Pmt:
Pmt(ставка, кпер, сумма[, цель[, тип]])
Первый аргумент, ставка, задает ставку процента выплат по займу за определенный период времени. Задаваемая вами ставка процента должна соответствовать периодичности выплат. Если нужно выплачивать ежемесячно по 8%-ной закладной, то не забудьте, что 8% является годовой нормой. В таком случае ставка должна задаваться выражением типа .08/12 (8% разделенные на 12 месяцев).
Аргумент кпер должен задаваться целым значением, представляющим общее число выплат, которые предстоит сделать по займу. Для ежемесячных выплат в течение 5 лет кпер должно быть равно 5 * 12, или 60. Общая сумма займа задается аргументом сумма.
Остальные аргументы необязательны. Чтобы рассчитать, сколько вам нужно откладывать, чтобы накопить определенную сумму, задайте аргумент цель, чтобы передать функции Pmt запланированную сумму в виде отрицательного числа- это сумма на будущее. (При этом аргумент ставка задает ожидаемую ставку процента. Если некоторая часть из целевой суммы уже накоплена, эта часть должна задаваться аргументом сумма.)
Чтобы использовать функцию Pmt в программном коде, присвойте ее значение переменной типа Double. Например:
dblPay = Pmt (.08/12, 360, 300000) ' Типичная закладная
dblSav = Pmt (07/12, 120, 12500, -75000) ' Цель = 75000р.
Все разнообразие финансовых функций VBA представлено в табл. 11.8. Чтобы таблица была удобной для использования, я удалил из списков аргументов необязательные. Чтобы получить дополнительную информацию о любой из этих функций, обратитесь к соответствующему раз зелу справки 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 путь, атрибуты | Оператор | Устанавливает заданные атрибуты дисковому файлу. Аргумент атрибуты задает числовое значение, являющееся суммой устанавливаемых |
Разное | ||
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). Точно так же объектами являются и слои, на которых размещаются элементы графики, и страницы, на которых располагаются слои. Объектом будет и сам документ, содержащий все эти страницы, слои, элементы графики и связи.