Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие по VBA.doc
Скачиваний:
28
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

Теме 6.Элементы управления Поле со списком и Список

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

У поля со списком кроме свойства Name (по умолчанию ComboBox) есть несколько характерных свойств:

.ListCount -содержит число элементов, внесённых в список;

.Text -соответствует содержанию выделенного текста;

.List (номер) -осуществляет доступ к элементу с указанным номером.

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

Кроме свойств, у Поля со списком есть методы:

.Clear -удаляет все элементы из Поля со списком (очищает Поле со списком;

.AddItem -добавляет новый элемент в Поле со списком;

.RemoveItem -Удаляет из Поля со списком указанный элемент.

Лабораторная работа 6. Работа со списками.

Пример1. На лист1 Excel создадим Поле со списком (ComboBox1), текстовое поле (TextBox1) 1и командную кнопку (CommandButton1). По щелчку на кнопку Поле со списком заполняется фамилиями сотрудников. (например Иванов, Петров. Сидоров,…), по щелчку на Поле со списком выбранная фамилия переносится в текстовое поле.

Расположение управляющих элементов на Лист1

Листинг 1.1. Процедура заполнения Поля со списком по щелчку на командной кнопке «Заполнить Поле со списком»

Листинг 1.2. Процедура щелчка на Поле со списком на символе ▼ и выборе Фамилии

Здесь учитывается, что ComboBox1.ListIndex выдаёт номер выбранного в Поле со списком элемента, а свойство List(k) с этим номером осуществляет доступ к указанному элементу.

Кроме Поля со списком имеется другой элемент управления, который называется Список(ListBox). У него своя пикторгамма, а свойства те же, что и у Поля со списком. Элемент управления Список занимает на рабочем листе фиксированный размер.

Пример 2. Пусть фамилии сотрудников записаны на Лист2 . На Лист3 создадим командную Кнопку Заполнить список и и элемент управления Список. Список должен заполняться данными из Лист2.

Листинг 2.1. Процедура заполнения Списка по щелчку на кнопке Заполнить список

Самостоятельная работа 6

Задание 1.

На рабочем листе Лист2 имеется прайс – лист, содержащий наименование и цену товаров компьютерного магазина. На листе Лист1 создать кнопку с названием Создать списки, создать Поля со списками по каждому товару и из выбранных товаров организовать список Заказа. Создать кнопку Печать и по щелчку по ней напечатать список заказа и сумму заказа.

Компьютеры Ноутбуки Сумки

Заказ

Задание 2. К заданию1 добавить пункт: при переносе заказа из Поля со списком в список Заказа, убрать название товара из соответствующего Поля со списком.

Задание 3. На листе 2 имеется прайс-лист с наименованием товаров и их ценой, на листе1 создать надпись в виде «Введи наименование товара.» и текстовое поле, куда надо ввести запрос в виде молочное, колбаса, конфеты, зефир и т.д.. По запросу составить список, в который переносятся товары из прайс-листа с указанием веса, цены и т.д. По щелчку на выбранный товар из списка его данные переносятся в список заказа. Под списком заказа найти итоговую стоимость выбранных товаров.

Задание 4. Создать автоматизированную книгу для учёта материальных ценностей. Рабочий лист Номенклатура содержит справочник товаров.

Рабочий лист Поступление корректирует поступление товаров. Лист Номенклатура скрытый и служит лишь для главного менеджера. Вводить в него данные можно только при знании пароля. На рабочем листе Поступление выведены следующие элементы управления:

Номенклатура Новый товар

цена название

кол-во цена

кол-во

Пароль Пароль

Тема 7. Работа с изображениями.

Кроме обычных свойств у Изображения есть свойство Picture. При выборе свойства Picture в окне свойств изображения, автоматически открывается диалоговое окно для выбора файла. В этом случае надо указать один из файлов с графическим изображением с расширением .bmp, .jpg,.jpeg, .gif и т.д..

Лабораторная работа 7. Работа с изображениями.

Рассмотрим такую задачу:

Пусть при перемещении мыши по экрану меняется изображение данного элемента, а именно: когда курсор мыши в одной части экрана, то в поле изображения появляется одна картинка, когда в другой части экрана, то другая картинка. Для решения этой задачи необходимо написать процедуру для обработки перемещения курсора мыши (MouseMove). Итак, в режиме конструктора вытащим на экран изображение Image1 .

Перейдём в VBA/ Выберем в левой части объектов Image1, а в правой части (события) - MouseMove.Тогда автоматически выйдет имя процедуры

Здесь описываются X и Y типа Single –координаты курсора мыши. Дополним эту процедуру командами, определяющими, в какой части экрана находится курсор мыши и меняющими соответственно картинки на экране.

Листинг1. Процедура замены картинок при движении мыши

У элемента управления Изображение имеется стандартное свойство Width, которое определяет ширину изображения. Функция VBA LoadPicture имеет входной параметр – имя графического файла, полный путь к нему. Чтобы эта программа выполнялась, необходимо на диске С: в папке kartinki в файлах leto и zima заранее записать картинки с расширением JPEG.

Самостоятельная работа 7

Задание 1. Разработаем следующую игру Бросание картинок. На рабочем листе следует разместить пять окон для изображений. При этом два окна будут основными –расположены слева и большие по размеру. Другие 3 окна имеют меньшие размеры и расположены в правой части рабочего листа (они будут содержать эталонные изображения.).Также на рабочем листе расположены 2 кнопки с надписями Бросок и Начать игру снова, и два текстовых поля.. В одно текстовое поле пишется сумма балов от результата броска, в другое – количество бросков. Смысл игры в следующем. Предварительно в левые три окна вводятся разные картинки. При щелчке на кнопку Бросок в каждое из двух основных окон для изображений должна попасть случайным образом одна из картин из набора эталонных. Если картинки в окнах основных (двух правых окнах)совпадают, то в текстовое поле добавляется 3 балла., а содержимое другого текстового поля при каждом броске увеличивается на 1.

Задание 2. На Лист 1 находится прайс – лист со списком компьютеров и ценами на них, а также указанием адреса файла с фотографией компьютера. На Лист1создать кнопку Заполнить список, текстовое поле Заказ и текстовое поле Цена. В эти поля переносятся из прайс - листа данные выбранного компьютера. В Изображение перенести фото выбранного компьютера, используя адрес, указанный в прайс – листе.

Тема 8. Переключатели

Переключатель используется для того, чтобы установить определённую опцию либо отображать конкретный набор элементов управления. По умолчанию переключатель имеет имя OptionButton. Если он включён, то его значение – True, иначе его значение – False. Работу переключателя рассмотрим на примере.

Лабораторная работа 8. Переключатели.

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

Листинг1.1. Щелчок по первому переключателю.

Листинг 1.2. Щелчок по второму переключателю.

Пример 2. Программа для игры Орёл – Решка. Создадим два переключателя и кнопку Бросание монеты.

Листинг 2.2. Процедура Щелчка по кнопке Бросание монеты

Перед процедурой CommandButton1_Click описателем Public описаны переменные s и k . В переменную s накапливается, сколько раз бросали монету, а в переменной k накапливается, сколько раз отгадали правильно, Орёл или Решка.

Если монета брошена 5 раз, то печатается, что произведено 5 бросаний и сколько раз угадали при 5 бросаниях будет Орёл или Решка. Функция Randomize –включает счётчик случайных чисел, Функция VBA Rnd – выдаёт случайное число со значением от 0 до 1, функция VBA Int преобразует в целый тип, отбрасывая дробную часть. Таким образом, результат выражения INT(2* Rnd()) будет или 0 или 1.

Самостоятельная работа 8

Задание 1. Имеется два переключателя с текстами Вологодская обл. и Ярославская обл. При щелчке на одном переключателе создаётся список городов этой области, при щелчке на другом переключателе создаётся список городов этой области. Для каждого выбранного города создать список предприятий этого города.

Вологодская область Ярославская область

Задание 2. На листе Кадры имеются анкетные данные всех сотрудников фирмы . На листе Поиск создать 3 переключателя под названиями Фамилии, Должность, Пол и кнопку Заполнить список, щелчок на которую заполняет список из листа Кадры с данными о сотрудниках выбранной переключателем категории. Для выбранного сотрудника вызвать фото и анкетные данные.

Задание 3.

Создать электронную анкету для приёма на работу.

Фамилия Место жительства

Имя г.Вологда

Отчество Другой город

Дата рождения

Студент Специалист

Место учёбы Место работы

Курс Примечание

Хорошее знание английского языка

Водительские права

Знание информационных технологий

После заполнения анкеты перенести данные на лист 2

Тема 9. Работа с диаграммами

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

Лабораторная работа 9.

Самостоятельная работа 9

Задание 1. На Лист2 имеются данные продаж по сети магазинов за несколько месяцев. На Лист1 создать два переключателя: Создать список магазинов и Создать список месяцев. По выбору из списка построить диаграмму по продажам в выбранном магазине или по продажам магазинов за определённый месяц.

Создать список магазинов Создать список месяцев Список

Задание 2. К заданию 1 добавить флажок. При включенном состоянии флажка выбирается гистограмма, при выключенном состоянии выбирается круговая диаграмма.

Тема 10. Элементы управления Счётчик и Полоса прокрутки

Элемент управления Полоса прокрутки используется для задания числового значения, причём этот элемент может устанавливать только целые неотрицательные значения. Основными событиями этого элемента являются события Change, SpinUp и SpinDown. Наиболее часто используемые свойства полосы прокрутки:

Value – возвращает или устанавливает текущее

значение ползунка на полосе прокрутки

Min - минимальное значение полосы прокрутки

Max - максимальное значение полосы прокрутки

SmalChange - устанавливает шаг изменения значения при

щелчке по одной из стрелок полосы прокрутки

LargeChange - устанавливает шаг изменения значения при

щелчке между ползунком и одной из стрелок

полосы прокрутки

Orientation -устанавливает ориентацию полосы прокрутки

(автоматическую, горизонтальную,

вертикальную).

Лабораторная работа 10. Работа с финансовыми функциями

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

Пример 1. Стоимость инвестиционных проектов.

Рассмотрим финансовую функцию ПС(), в которой в качестве значения возвращается стоимость инвестиций, приведённая к текущему моменту времени. Этот показатель определяет сумму, которую нужно было бы вложить при данном значении процентной ставки, чтобы получить эквивалентный доход. У функции пять аргументов, которые указываются в такой последовательности:

  1. Процентная ставка за период между выплатами.

  2. Количество периодов выплаты.

  3. Постоянная сумма выплат за каждый период.

  4. Будущая стоимость инвестиций (или остаток суммы задолженности к окончанию выплат).

  5. Аргумент, который принимает значения 1, если выплаты производятся в начале периода, и 0. если в конце периода.

Рассмотрим простой пример, в котором требуется оценить стоимость двух инвестиционных проектов. Каждый из проектов рассчитан на 5 лет. В первом подразумевается получение ежегодных дивидендов в размере 20000 рублей. Второй подразумевает получение суммы 100000 рублей по окончании проекта (т.е. через 5 лет). Процентная ставка равна 4%.

Формула первого проекта:

Формула второго пректа:

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

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

Листинг кода Счётчик:

Private Sub SpinButton1_Change()

Range("B4").Value = CStr(SpinButton1.Value)

End Sub

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

Пример 2. Выплаты по займам.

Финансовая функция Excel ПЛТ() полезна в тех случаях, когда требуется вычислять периодические платежи по обслуживанию всевозможных займов. Функция имеет 5 аргументов, которые указываются в такой последовательности:

  • Процентная ставка для выплат по займу.

  • Количество периодов выплаты.

  • Приведённая стоимость займа.

  • Остаток средств после последней выплаты.

  • Аргумент, который принимает значения 1, если выплаты производятся в начале периода, и 0. если в конце периода.

Финансовая функция ПРПЛТ() служит для расчёта суммы, выплачиваемой по процентам. Финансовая функция ОСПЛТ() даёт выплата для погашения номинальной суммы займа. Аргументы у этих функций такие же, как и у функции ПЛТ(), за тем исключением, что между первым и вторым аргументом вклинивается ещё один, определяющий порядковый номер периода выплат, для которого вычисляются соответствующие составляющие.

Сделаем полную автоматизацию выплаты по займам.

Создадим 9 Надписей (Ежемесячные выплаты по закладной, Процентная ставка , и т.д.), 8 текстовых полей, 1 Счётчик и 1 командную кнопку.

Листинг Щелчок по командной кнопке ОК.

Private Sub CommandButton1_Click()

Dim a As Single, b As Single, c As Single, d As Single

a = CSng(Val(TextBox1.Text)) / 12

b = CSng(Val(TextBox2.Text)) * 12

c = CSng(Val(TextBox3.Text))

d = Pmt(a, b, c)

TextBox4.Value = CStr(d)

End Sub

Листинг Щелчок по кнопке Счётчик

Private Sub SpinButton1_Change()

Dim a As Single, b As Single

Dim c As Single, d As Single, r As Single

SpinButton1.Min = 1

a = CSng(Val(TextBox1.Text)) / 12

b = CSng(Val(TextBox2.Text)) * 12

SpinButton1.Max = b

k = SpinButton1.Value

c = CSng(Val(TextBox3.Text))

d = IPmt(a, k, b, c)

TextBox7.Value = CStr(k)

TextBox5.Value = CStr(d)

r = PPmt(a, k, b, c)

TextBox6.Value = CStr(r)

TextBox8.Value = CStr(d + r)

End Sub

Самостоятельная работа 10.

Задание 1. Кредит в 1000000 р. выдан на 10 лет под 13% годовых с ежеквартальными платежами. Каков размер ежеквартального платежа в случае, когда платежи вносятся в начале квартала, в конце квартала? Какая часть платежа за конец второго года идёт на погашение процентов по кредиту?

Задание 2. Вас просят дать в долг А руб. и обещают вернуть в течение N лет При какой годовой процентной ставке эта сделка имеет смысл?

Задание 3. Вы берёте в долг P руб под готовую процентную ставку по А руб. Сколько лет займут эти выплаты?

Тема 11.Применение технологии при решении макроэкономических задач

Известно, что рациональное функционирование многоотраслевого хозяйства предполагает соблюдение баланса между отраслями. Каждая отрасль многоотраслевого хозяйства. С одной стороны, является производителем определённой продукции. А с другой –потребителем продукции, выпускаемой другими отраслями. Макроэкономика функционирования многоотраслевого хозяйства требует, чтобы соблюдался баланс по производству и потреблению между отдельными отраслями.

Балансовый принцип связи различных отраслей состоит в том, что валовой выпуск i-ой продукции должен быть равен сумме объёма потребления. В простейшей форме балансовые соотношения имеют вид:

где

-общий объём выпускаемой продукции i -ой отрасли;

– объём продукции i -ой отрасли, потребляемой j-ой областью при производстве объёма продукции ;

– объём продукции i- отрасли конечного потребления (для реализации в непроизводственной сфере).

Для производства продукции j- отрасли объёмом нужно использовать продукцию i-ой области объёмом , где - постоянное число, характеризующее прямые затраты. Это допущение позволяет представить модель многоотраслевой экономики (модель Леонтьева) в виде системы линейных уравнений, которая в матричной форме имеет вид:

где

-вектор валового выпуска;

-вектор объёма продукции конечного потребления;

A--матрица коэффициентов прямых затрат.

Приведённая система уравнений может быть представлена в виде

где -единичная матрица.

Если существует обратная матрица (матрица полных

затрат), то существует единственное решение системы

Из экономической теории известно несколько критериев продуктивности матрицы A:

  • матрица A продуктивна тогда и только тогда, когда матрица существует и её элементы неотрицательны;

  • матрица A с неотрицательными элементами продуктивна, если сумма элементов по любому её столбцу (строке) не больше единицы, причём хотя бы для одного столбца (строки0 строго меньше единицы.

Замечание. Неотрицательная матрица А ≥ 0 называется продуктивной, если существует хотя бы один вектор Х > 0, такой, что Х > АХ или в преобразованном виде (E – A) X > 0.

Экономический смысл этого определения состоит в следующем: неотрицательная матрица А ≥ 0 продуктивна, если существует такой положительный вектор-столбец объёмов производства отраслей Х > 0, что каждая отрасль может произвести некоторое количество Y > 0 конечной продукции.

Рассмотрим пример решения макроэкономической задачи на применение модели Леонтьева.

Требуется найти матрицу коэффициентов прямых затрат и определить её продуктивность, объёмы конечного продукта.

В приведённой таблице в первых пяти столбцах (группа Потребление) содержатся значения , а в последнем столбце – элементы вектора объёма конечного потребления .

Решение в Excel. Рассмотрим матрицу Х, расположенную в диапазоне С3:G7, вектор , расположенный в диапазоне H3:H7, вектор , расположенный в диапазоне I3:I7. Составим макрос для решения поставленной задачи на применение модели Леонтьева.

Матрица коэффициентов прямых затрат A вычисляется путём деления i-го столбца матрицы Потребления Х на строку транспонированного вектора . Это вычисление можно выполнить, используя формулу деления матрицы Потребление на транспонированный вектор валового выпуска .

. На листе выделим область

C11:G15 и в строке формул введём команду:

=C3:G7/ТРАНСП(I3:I7)

Эта команда выполняется нажатием трёх клавиш: <Ctrl> + <Shift> + <Enter> (матричная операция). Получим значения матрицы А.

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

Вычислим значения элементов полных затрат:

Проанализируем полученные в результате расчётов данные. Матрица полных затрат (Е-А)-1 существует, все её элементы положительны. Следовательно, необходимое и достаточное условие продуктивности матрица А выполняется.

Список литературы.

  1. Информатика для экономистов. Учебник. Под общей редакцией Матюшка В.М. М . ИНФРА-М, 2009

  2. Экономическая информатика. Учебное пособие. Под редакцией Д.В.Чистова. М. Кнорус, 2009.

  3. Сергей Кашаев. Офисные решения с использованием Microsoft Excel 2007 и VBA. (+CD)/-CПб.: Питер, 2009.-352с. ил.

  4. Андрей Гарнаев. EХСEL, VBA, INTERNET в экономике и финансах. Санкт-Петербург, «БХВ-Петербург,.2005. 796 с.

  5. Алексей Васильев. EХСEL 2007 + видеокурс на примерах. СП. БХВ Петербург, 2007. -651 с.

  6. Владимир Пикуза , Александр Гаращенко. Экономические и финансовые расчеты в EХСEL. С.П. 2003. -396 с.

  7. Глушаков С.В. , Сурядный А.С. Microsoft Excel 2007.-М.:АСТ:АСТ МОСКВА, 2009.-512 с.(Эффективное руководство).