Программирование в среде Visual Basic for Applications (1082430), страница 18
Текст из файла (страница 18)
18.1). Программирование в среде )гии«1 Ваемо Уог Аррйсаионз 138 Паете опп 1шйайхе 1. Активизирует диалоговое окно. 2. Запрещает ввод данных пользователем в по- ле Кратность метода. 3. Назначает клавише Езс функцию кнопки Отмена, а клавише Еп1ег — Вычислить. 4. Назначает кнопке Вычислить сочетание кла- виш Ай+В, а кнопке Отмена — А11 Ю.
5. В группе Тип амортизации при инициали- зации диалогового окна назначает выбор пере- ключателя Стандартный метод. За счет вы- бора этого переключателя при инициализации диалогового окна не отображаются надпись «Кратность метода» и соответствующие ей по- ле и счетчик (рис. 18.2). Устанавливает для счетчика минимальное значение, равное двум, и шаг изменения значений счетчика, также равный двум, для убыстрения прокрутки счет- чика. Промежуточные значения вводятся в по- ле Кратность метода не с помощью счетчика, а посредством клавиатуры Яр1пВиыоп1 СЬапйе Изменяет значение счетчика, которое вводится в поле Кратность метода Ор11опВп11оп2 Сйс1с Отображает в диалоговом окне надпись «Крат- носп метода» и соответствующие ей поле и счетчик ОрбопВпЫоп2 С! 1сн Скрывает в диалоговом окне надпись «Крат- ность метода» и соответствующие ей поле и счетчик 1.
Проверяет согласованность вводимых дан- ных. В случае их несогласованности отобра- жает соответствующее сообщение (рис. 18,3), 2. Используя финансовую функцию рабочего листа лэ (лмгд) и овв (ддоь), вычисляет ве- личину амортизации выбранным методом. Удаляет с рабочего листа все ранее созданные графические объекты и внедряет объект Нажатие кнопки Вычислить запускает на выполнение процедуру СопппапйВп11оп1 С1!с1с Рассмотрим, как приведенная ниже программа решает перечисленные задачи и что происходит в программе. 18. Расчет амо гяиза ии 139 ЪУогдАгб Подготавливает рабочий лист для вывода результатов вычислений. Выводит полученные данные на рабочий лист и в диалоговое окно (рис.
18.4) Закрывает диалоговое окно Нажатие кнопки Отмена запускает на выполнение процедуру СопппаппВптгоп2 Сйс1с Рис. 18.2. Сообщение о несогласованности вводимых данных Рис. 18.З. Сообщение о несогласованности вводимых данных рг1уаее ЯцЬ Сопааапднцссоп1 СВВск1) Процедура расчета амортизации Р1и В Ав РоцЬ1е Рьт Е Ав РоцЬ1е Раи А Ав РоцЬ1е Раж Уе Ав 1пеедег Раж Ус Ав 1поедег Рап 'и Ав 1пгедег Р1т Е1ад Ав Воо1еап  — первоначальная стоимость оборудования, для которого подсчитывается амортизация Š— остаточная стоимость оборудования уе — время полной амортизации Ус — период, для которого рассчитывается амортизация 140 Программирование в среде )г(еиа( Вае(сапог Арр((сайопе Р1ад — логическая переменная, равная Тгце, если амортизация рассчитывается стандартным методом, и Ра1ве, если методом )<-кратного учета О1ш и Ав 1ппедег Офш 3 Ав 1пведег и, З вЂ” вспомогательные переменные, используемые для удаления ранее созданных графических обьектов Считывание в переменные из диалогого окна значений параметров В = СОЬ1(ТехСВох1.Техт) Е СОЬ1(ТехСВох2.Техв) уе = С1пд(ТехСВохЗ.техп) Ус = С1пп(ТехСВох4.Техв) Проверка согласованности вводимых данных 11 В < Е ТЬеп МздВох "Остаток больше начальной стоимости", чЬЕхс1ашадфоп, "Амортизация" Техввох1.БеСРосцв ЕХ1С БцЬ Епс1 11 11 Уе < Ус ТЬеп МздВох "Ошибка в сроке амортизации", чЬЕхс1ашаСТоп, "Амортизация" ТехввохЗ.БеСРосцв ЕхТС БцЬ Епс) 11 Определение выбранного переключателя: если "Стандартный", то переменной Р1ад присваивается Тгце; если Ь-кратного учета, то переменной Р1ад присваивается Ра1ве 11 ОрСТопВцввоп1.ча1це = Тгце ТЬеп Р1ад = Тгце Е1ве Р1ад = Ра1ве Епс) 11 Расчет амортизации в зависимости от выбранного метода 11 Р1ад = Тгце Тпеп Стандартным методом А = Арр11саофоп.БУО(В, Е, уе, ус) Е1ве Методом А-кратного учета — С1по(ТехСВохб.Техп) А = Арр11сао)оп.ООВ(В, Е, уе, ус, Егн$1 1 18.
Расчет ама таза ии 141 Вывод величины амортизации в диалоговом окне 15 А >= 0.01 ТНеп А = догмат(А, "Г1хеб") Е1ве А = 0 Епд 16 ТехГВох5.Техс = СЯГг(А) Подготовка рабочего листа для ввода данных Определение общего числа объектов БАаре на рабочем листе и = Асс1чеБНееГ.Я)тарез.соцпс Удаление с рабочего листа всех ранее созданных объектов ЯАаре 15 и >= 1 ТНеп Рог 3 = 1 То и Асг1чеЯЪееГ.ЯНарев .Яе1есг Яе1есс1оп.пе1есе Хехв 3 Епд 15 Созлание объекта Хогс(Агс Асс1чеЯ)тееС.Я)ьарев.Ас(с(ТехГЕггеес (шзотехГЕЕТесс14, "Амортизация", "1шрасс", 18$, швоТгце, щвора1ве, .166.5, 105$).Яе1есс й Сдвиг объекта Хогс)АгГ Яе1есс1оп.ЯИареЕапде.1псгешепГЬейс111$ Бе1есс1оп.Я(таренапде.1псгешепстор -100.5 Изменение ширины столбцов А и В и установка в них режима ввода текста с переносом Асс1чеЯЬеес.со1цшпв("А").Яе1есс ХВГЬ Яе1есс1оп .Со1цшпХВс(ГЬ =ЗО .Хгартехс = Тгце Епс) ХТГН Асс1чеЯНеег.Со1цшпв ( "В" ) .Яе1есс Х1Г)т Яе1есГВоп . Со1цшпХ1с)ГЙ = 20 .Хгартехс = Тгце Епс) ХВГН Снятие выделения со столбца В выбором одной ячейки Асс1чеЯ)теег.Халде("В1").Яе1есс Ввод заголовков полей на рабочем листе Х1ГЬ Асг1чеЯНеес .Ванде("А1") .Ча1це = "Начальная стоимость" .Ванде("А2") .Ча1це = "Остаточная стоимость" .Ванде("АЗ").Ча1це = "Время полной амортизации" .Ванде("А4").Ча1це = "Период, для которого рассчитывается амортизация" .Ванде("А5").Уа1це = брасчет выполнен" .Калде("А6").Ча1це = "Величина амортизации" епс( х1гН 142 Программирование е среде Мина! Вае!с1ос Арр(!са(!еле Ввод данных в ячейки рабочего листа ХЕГЬ КОСЕчеЯЬеег .
Рапде ("В1") . Ча1ие = В .Еапде("В2").Ча1ие = Е .Еапде("ВЗ").Ча1ие = Уе .Еапде("В4").Ча1ие = Ус .Ванде("Вб").Ча1ие = А .Еапде("В5").(4гарТехг = Тгие 11 Р1ад = Тгие ТЬеп .Еапде("В5").Ча1ие = "стандартным методом" Е1зе .Рапде("В5").Ча1ие = "методом " а СЯгг()с) а "кратного учета амортизации" Епс) 15 Епд ИЕгЬ Епс) ЯиЬ Рг1чаье ЯиЬ СогпиапдВиггоп2 С11с)с () Процедура закрытия диалогового окна Овегрогт1.НЕс)е Епд ЯиЬ Рг1чаге ЯиЬ Орг1опВиггоп1 С11с)с!) Процедура скрывает название, поле и счетчик для ввода кратности амортизации ПаЬе1б.ЧЕвЕЬ1е = Ра1ве ТехГВохб.чаваЫе = Ра1ве Яр1пВиггоп1.Ч1вЕЬ1е = Ра1ве Епс) ЯиЬ Рг1чаге ЯиЬ Орс1опВиггоп2 С11сй() Процедура делает видимыми название, поле для ввода кратности амортизации и счетчик ПаЬе1 6.ЧЕ|ЕЫе = Тгие Техгдохб.Ч1в1Ые = Тгие яр1пВиггоп1.ЧЕвЕЫе = Тгие Епд ЯиЬ Рг1чаге яиЬ яр1пВиггоп1 СЬапде() Процедура вводит значение счетчика в поле ввода ТехСВохб.Тенг = Сягг(яр1пВисгоп1.Ча1ие) ) Епс) ЯиЬ Рг1чаге яиЬ Овегрогю.1пТГТа11зеб Процедура активизирует диалоговое окно Расчет амортизации При инициализации окна выбран первый переключатель ОрСТопВиггоп1.Ча1ие = Тгие Первоначально название, поле и счетчик для ввода кратности амортизации не отображаются в диалоговом окне 18.
Расчет аио виза ии Техеиохб.ипаЬ1ес1 = Еа1яе техСВохб.71вЕЬ1е = Еа1яе ЦаЬе1б.71|ЕЬЕе = Еа1яе Яр1пВцееоп1.71вЕЬЕе = Еа1яе Минимальное значение и шаг, с которым изменяются значения счетчика Х1СЬ Яр1пВцееоп1.М1п = 2 .Яша11СЬапце = 2 Еп(2 Х1СЬ Функция кнопки Отмена выполняется по умолчанию СошшапйВцееоп2.Ребац1С = Тгце Нажатие клавиши Еяс эквивалентно нажатию кнопки Отмена Сошшапсвцееоп2.Сапсе1 = Тгце Функция кнопки Вычислить выполняется по нажатии клавиш А1с+Р или на русской клавиатуре А1С+В СопааапсзВцееоп1.Ассе1егаеог = "Р" Функция кнопки Отмена выполняется по нажатии клавиш А1Ь+1 или на русской клавиатуре А1С+О Сошшапоицееоп2.Ассе1егаеог = Цяегрогш1.ЯЬоы Епб ЯцЬ Рис.
18.4. Отчет, выводимый на рабочем листе программой расчета амортизации Программирование в среде У!яиа! Вав!с тог Арр1!са(!оля При написании программ с внедренными графическими объектами лучше всего воспользоваться средством Масгойесог(1ег. Для активизации Масгойесог(1ег выберите команду Сервис!Макрос!Начать запись и запустите Масгойесог(1ег на запись. После задания всех параметров в появившемся диалоговом окне Запись макроса и нажатия кнопки ОК появится плавающая панель инструментов с кнопкой Остановить запись. Теперь все производимые действия будут записываться до тех пор, пока не будет нажата эта кнопка. Выполните построение объекта %ог(1Аг1 по следующему алгоритму: 1. Нажмите кнопку Добавить объект %ог(1Аг$ (1пяег$ %огдАгГ) панели инструментов Рисование.
2. В появившемся окне Коллекция и((ог(1Аг$ выберите нужный стиль надписи. Нажмите кнопку ОК. 3. В появившемся окне Изменение текста %ог(1Агг установите шрифт и размер отображаемого текста, а также в поле Текст введите текст, который будет отображаться, например Амортизация. Нажмите кнопку ОК. 4. На рабочем листе появится внедренный объект %ог(1Аг1. Выберите и перенесите его в требуемое место на этом листе.
5. Для того чтобы разобраться, как происходит программное удаление объекта %ог(1Аг1 с рабочего листа, выделите его и удалите с помощью клавиши Пе!е(е. Перечисленные выше действия будут переведены Масгойесог(1ег в следующий макрос: ЯпЬ Макрос1() Макрос1 Макрос Макрос записан 26.11.99 (Владимир) Ассзиезиеес.эьарея.хс(дтехсейгеес(пяотехсестесс14, "Амортияапия", "1ераст", 18(), пяоттпе, тяога1яе, 166.5, 105()).Бе1есо Бе1еспзоп.ЯЬаренапде.тпстетепоьегс 111$ Яе1ессзоп.ЯЬаренапде.тпстетепстор -100.5 Асс1иеялеес.яьарея(")вотдхтс 1").Бе1есс Яе1есп1оп.ое1еое Епс) БпЬ Первые три инструкции этого макроса предназначены для создания объекта %ог(1Аг1. Их просто надо скопировать в то место программы расчета амортизации, где создается этот объ- 18. Расчет амо тиза ии 145 ект.