Программирование в среде Visual Basic for Applications (1082430), страница 13
Текст из файла (страница 13)
Процедура перелистывания листов рабочей книги с помощью переключателя С помощью кнопки Кнопка создайте на ячейках С13:С15 рабочего листа Оглавление кнопку СопппапоВппопб, назначьте свойству Сарйоп этой кнопки значение Перейти. При этом на поверхности кнопки вместо надписи СопппапоВоттопб появится надпись Перейти. С помощью кнопки Переключатель создайте на ячейках В13, В14 и В15 — три положения переключателя 1см. рис.
12.) ). Установите значения свойства Сар1юп этих переключателей равными Май, Июнь и Июль соответственно. Установите для каждого переключателя значение свойства СгонрХагпе равным Оглавление (для объединения их в группу). Установите значение свойства Уа!пе одного из переключателей, например Май, равным Тгне, а двух других — г"а!яе. Назначьте кнопке Перейти следующую процедуру: Ртьвате ЯпЬ Сопввапс)Впттопб С11с)т() Рьт а Ая тптедет ХотвяЬеетя("Вспомогательный").Аотьвате АоттнеЯЬеее.канде(тномер").Яе1еот 11 ОртьопВпттоп1.да1пе ТЬеп а = 1 11 Ортьопвпттоп2.Ча1пе ТЬеп а = 2 11 Ортьопвпттопз.да1пе ТЬеп а = 3 Астьчесе11.Ча1пе = а Астьвезьеет.наяде("Лист").Яе1еот я = Аотьвесе11.Ча1пе (ЕотвяЬеетя(я).Аотьвате Епд ЯпЬ В этой процедуре учитываются такие особенности элемента управления ОрйопВппоп: 12.
Создание автоматизированного оглавления рабочей книги 99 Объект управления — кнопка переклю- чателя с указанным номером ОрбопВцпопя (номер ) Свойство Ча!це объекга Ор()опВцпопз Описывает положение переключателя: выбрана данная кнопка нли нет Постоянная х)Оп, равная единице Используется, чтобы описать ситуацию, когда кнопка переключателя выбрана процедура инициалияации раскоывающегося списка Рп1уаце ЯцЬ СоюЬовох1 СЬапде() пью я Ая Япгъпд я = СоюЬовох1.уа1це Хопхяпееця(я).Асцъуаце Епг) ЯцЬ процедура инициализации кнопки Най Рпьуапе ЯцЬ Соагдапдвццпоп1 С11сх() Япееця(тмаи") .Яе1есп Епс) ЯцЬ По мере создания элементов управления (поля, списки, переключатели и т. д.) Ехсе! по умолчанию присваивает им порядковые номера, которые входят в имена, отображаемые в поле имени, например Кнопка1 (СопппапдВп!!оп1), Полоса прокрутки2 (Бого)Ваг2), ПереключательЗ (ОрВопВп!ФопЗ).
Внося изменения в поле имен, можно изменить имена объектов управления. Таким образом, процедура Соп)пзап(!Вп!!опб С))с!сО, в зависимости от включенного переключателя, присваивает переменной «а» одно из возможных значений Май, Июнь или Июль, а кнопка Перейти активизирует лист с соответствующим именем. Можно объединить созданные переключатели в группу. Для этого с помощью кнопки Дополнительные элементы откройте список дополнительных элементов управления и выберите группу М!сгояой г огпзя 2.0 г гап)е. Создайте на некотором диапазоне ячеек группу, присвойте группе имя с помощью кнопки Надпись (ЬаЬе!) и разместите в группе необходимые переключатели и кнопки.
Таким образом, на листе модуля будет содержаться текст следующих процедур, соответствующих созданным элементам управления: 100 Программирование в среде Мина( Ваз(с1ог Арр((са((олз процедура инициализации кнопки Июнь Рг1чапе ЯцЬ СопппапдВцппоп2 С11с)с() БЬеепя (" Июнь" ) . Бе1есс Епд БцЬ процедура инициализации кнопки Июль Рг1гапе ЯиЬ СопппапдВцсгопЗ С11с)с() БЬеепя("Июль" ) .Бе1есг Епс) ЯцЬ процедура инициализации кнопки ОЕ Рг1часе яцЬ СоююапдВцссоп4 С11с)с() О1и я Ая Япг1пБ я = Балде("Первый" ) .Ча1це ЯЬееся(в).Асс1чапе Епд ЯцЬ процедура инициализации кнопки Перейти иа лист Рг1часе БцЬ Сопппапс)Вцссоп5 С11сН() О1ю я Ая Бпг1пд в = Надое (" Первый" ) .Ча1це ЯЬеепв(в).Асс1часе Епд БцЬ процедура инициализации кнопки Перейти Рг1чапе яцЬ СоюзпапдВцггопб С11с)с() ОТт а Ая 1пседег ХогЬвЬееся("Вспомогательный" ).АсПТчаге Асг1чеБЬеес.Балде("Номер" ).Бе1есс 11 Орс1опВцппоп1.Ча1це ТЬеп а = 1 11 Орс1опВцппоп2.Ча1це ТЬеп а = 2 11 Орс1опВцпгопЗ.Ча1це ТЬеп а = 3 Асп1чеСе11.Ча1це = а Асп1чеБЬееП.Балде("Лист" ).Бе1есг в = Асп1чеСе11.Ча1це Хог)сяЬеесв(в).Асп1чапе Епд ЯцЬ процедура инициализации кнопки Рг1часе ЯцЬ ЬТвпвох1 С11сК() Р1ю я Ав Япг1пд ХогКяЬеепв("Вспомогательный" ).Асс1чапе Асп1чеБьееь .
наяде ("номер") .Бе1есп Асг1чесе11.Роппц1ан1С1 ЬТвСВох1.ЬТяс1пдех е 1 Хогхяпеегя("Вспомогательный" ).Асг1чаге Асг1чеБЬеев.йапЯе("Лист" ).Бе1есс я = АсПТчеСе11.Ча1це Хог)свЬееся(в).Асп1часе Епд БцЬ 13. Создание сценариев Рассмотрим пример процедуры пользователя для анализа сценариев ([21). Создадим процедуры Вариант 1, Вариант 2 и Вариант 3. При запуске этих процедур в ячейки будут введены значения, соответствующие этим вариантам.
На рис. 13.1 приведен пример рабочей таблицы„обрабатывающей простую производственную модель с пятью переменными: Ячейка В! Ячейка В2 Ячейка ВЗ Ячейка В5 Ячейка Вб Стоимость услуг Стоимость материала 1 Стоимость материала 2 Количество материала 1 Количество материала 2 в с в Рис.
13.1. Запрограммированные сценарии Предположим, что компания производит изделие, для изготовления которого нужно затратить определенное количество рабочего времени и материалов. Себестоимость изделия вычисляется в ячейке В7 по формуле =СУМИПРОИЗВ ~В1:ВзгВ4:Вб) Отпускная цена вычисляется в ячейке В9 по формуле =В7"(1гвб) 1 2 з 4 5 б ? в 9 1а 11 12 1З Стоимость услуг Стоимость материала 1 Стоимость материала 2 Норма времени(часы) Количество материала 1 Количество материала 2 Себестоимость Товарная наценка Отпускная цена Прибыль на одно изделие Количество изделий Суммарная прибыль З1 59 а инт 27 12 з 4 657 5% 59О зэ ЗВ 11ВЗ 73.
Создание сценариев 103 Прибыль на одно изделие вычисляется в ячейке В10 по фор- муле =Вз-В7 Суммарная прибыль вычисляется в ячейке В12 по формуле =В10*В11. Менеджер пытается предсказать суммарную прибыль, однако у него нет точных сведений о том, каковы будут почасовая оплата труда, стоимость единицы материала и количество материалов. Эти данные определяются по трем сценариям, приведенным в табл. 13.1. Таблица 13.1. Возможные варианты Следующие три процедуры, связанные с соответствующими кнопками, осуществляют ввод требуемых значений в ячейки таблицы. ЯпЬ Вариант 1() Капуе("Стоимость услуг") = 23 Ванде("Стоимость материала 1") Ванче("Стоимость материала 2") Ванче("Количество материала 1' Вапче("Количество материала 2' Епо ЯцЬ 62 — 32 ) = 5 ) = 3 БпЬ Вариант 2() Ванче("Стоимость услуг") = 29 Капуе("Стоимость материала 1") Ванче("Стоимость материала 2") Ванче("Количество материала 1' Ванче("Количество материала 2' Епд ьцЬ 55 24 ) = 3 б Программирование в среде У(еиа( ВаеГс1ог Аррпсапот 104 ЯнЬ Вариант 3() Калде("Стоимость услуг") = 31 Ванче("Стоимость материала 1") Калде("Стоимость материала 2") Калде("Количество материала 1" Ванче("Количество материала 2" Епд ЯнЬ 59 — 27 ) = 3 ) Данную задачу составления сценариев можно решить и более изящно с помощью следующей программы.
ЯнЬ Товар (а, р1, р2 Аа ПопЬ1е, Ванче("Стоимость услуг") = а Ванче("Стоимость материала 1" Ванче("Стоимость материала 2" Ванче("Количество материала 1 Капче("Количество материала 2 Епс) ЯпЬ п1, п2 Аа 1псечег) ) =р1 ) =р2 ") =п1 ") =п2 ЯпЬ Вариант 1() Товар 23, 62, 32, 5, 3 Епс) ЯпЬ ЯпЬ Вариант 2() Товар 29, 55, 24, 3, 6 Епс) ЯнЬ ЯпЬ Вариант 3() Товар 31, 59, 27, 3, 4 Епд ЯпЬ Рассмотрим еще один пример составления сценариев — начисление комиссионных 112)).
Пусть в некотором магазине продавцам начисляют комиссионные по следующему правилу: ° если объем продаж не менее 100 000 руб., то комиссионные равны р1 процентов от объема продаж; ° если объем продаж от 50 000 до 100 000 руб., то комиссионные равны р2 процентов от объема продаж; ° если объем продаж менее 50 000 руб., то комиссионные равны рЗ процентов от объема продаж. Приведенные ниже процедуры вычисляют комиссионные для двух сценариев: р1 = 4 "~о, р2 = 3 ',га, рЗ = 2 ',га и р1 = б ',га, р2 = 4 %, рЗ = 2 'Ъ (рис.
13.2), 13. Создание сценариев 105 Заметим, что комиссионные, начисленные по максимальному проценту, будут окрашены красным цветом, по наименьшему— черным, а по среднему синим. Рис. 13.2. Сценарии начисления комиссионных Рьи г1 Ав 1пгедег Еапссаоп Нее, ра, р2, рЗ Ав РопЬ1е, 11 Ав 1пседег) Р1т я1, в2, яЗ Ав РопЬ1е = 100000 ТЬеп в1 = р1 11 = 1 Епд 11 11 1 < 100000 Апд 1 >= 50000 ТЬеп в2 — р2 11 = 2 Епд 11 11 1 < 50000 ТЬеп я2 = рЗ 11=3 Еп<) 11 Ке = (я1 + я2 + вЗ) * з. ЕПд Еппсгьоп ЯпЬ Та (рт, р2, рЗ Ав РопЬ1е) Рьт 1 Ая РопЬ1е Рьп 3, и Ая 1поедег и = Арр11сасьоп.
Соппгл(ЯЬееся("Комиссионный" ).Калде("В:В")) рог 3=2 То и 1 = Се11в (3, 2) .Ча1пе ИТГЬ Се11я(3, 3) . че1ое = Ве (1, р1, р2, рЗ, Г1) Яе1есг Саве 11 Севе 1в = 1 .Еопг.со1ог1пдех = 3 106 Программирование в среде Уииа! Вав(с Гог Аррасайонв Саяе тя = 2 .Ропе.со1оскпйех Саяе Тя = 3 .Репо.Со1ос1пйех Епй Бе1есс Епй ХТСЬ Иехе 3 Епй БпЬ БпЬ Коы1() Та 0.04, 0.03, 0.02 Епй БпЬ БпЬ Ком2() Та 0.06, 0.04, 0.02 Епй БпЬ Приведем необходимое пояснение к данной программе. В нВА диапазон В:В обозначает столбец В. Функция СЧЕТЗ в русскоязычной версии Ехсе! подсчитывает число непустых ячеек в выделенном диапазоне. Ее эквивалентом в англоязычной версии является функция СошМА. Таким образом, функция Арр11саояоп.
СоппсА(БЬееоя("Комиссионные" ).Ванде("В:В")) вычисляет число непустых ячеек в столбце В. 14. Модель управления запасами Рассмотрим следующую модель управления запасами Я2]). Уличный продавец покупает журналы у издательства по цене 20 руб. за штуку, а продает — по 23 руб. за штуку. В случае, если товар не удается реализовать, продавец возвращает его издательству по цене 17 руб. за штуку. Необходимо определить, сколько журналов следует закупать продавцу, чтобы его ожидаемая прибыль была максимальна. Продавцу никогда не удавалось продать более 20 журналов, а в среднем за 37 дней объемы реализации и число соответствующих событий показаны на рис. 14.1 (для простоты учитываются только пачки по пять журналов).
зз ия й. 1 В '2 в и 1~1 Фара Правка ана Вотавка Фиа<ат Парана Яаннив Пкно 2 Щ х1 1ЗОВЫ 4В12>27 Х аайС7 ф,а' я Г- ЬЬ 1аФ<ат - Я Кй1<цз >756 <Ркиб Ф1йАИ й к Продана О 5 1О 15 Л> О 5 1а 15 1 >1Г 2 вспоиотатвтвний хлист4 >Лис>1,< Пист 1< ! Циот В ячейку Е9 введена формула 5 К87СУММ< ( 8Г58: 83881 5 6 7 в 9 19 11 12 19 14 Пок>ока 15 15 17 16 19 20 <> к Готово Рис.