ПЗ-9. Использование макросов и модулей VBA.
Создадим новый лист Модули. Напишем макрос для заполнения столбца F листа геометрической прогрессией. Вызываем меню Сервис-Макрос-Начать запись, в окне Запись макроса задаем имя ГеомПрогр, нажимаем ОК и дальше выполняем действия для построения прогрессии: в ячейку F1 вводим число 2, нажимаем зеленую галочку, вызываем меню Правка-Заполнить-Прогрессия, в окне Прогрессия выбираем пункты: по столбцам, геометрическая, шаг 2, предельное значение 100000, кнопка ОК, прекращаем запись макроса. Наносим кнопку из панели Формы на лист и назначаем ей макрос ГеомПрогр, на кнопке задаем название: "Построить геометрическую прогрессию". Сразу же напишем макрос очистки столбца F: вызовем окно записи, присвоим имя Очистка, нажмем ОК и выделим диапазон F1:F20, нажмем кнопку Delete, щелкнем по ячейке G4, прекратим запись макроса. Нанесем новую кнопку рядом с кнопкой построения прогрессии, присвоим ей макрос Очистка, изменим надпись кнопки: "Очистить столбец F". Пощелкаем созданными кнопками. Нажмем сочетание клавиш Alt+F8 ( вызов окна Макросы), выберем макрос Очистка, нажмем кнопку Войти. Появится окно с модулем VBA, где активной будет запись программы Очистка (Sub Очистка()). В этой программе перечислены операторы, которые мы задавали при записи макроса своими действиями. Sub Очистка() ' Очистка Макрос ' Макрос записан... Range("F1:F20").Select Selection.Clear Range("G4").Select End Sub Можно, при необходимости, изменить действия макроса (программы) прямо в данном модуле. Нанесем на лист еще одну кнопку и присвоим ей макрос Возврат. Находясь на титульном листе, напишем макрос ОткрМодули для открытия листа Модули и присвоим его кнопке открытия. Теперь на листе Модули сделаем так, чтобы при нажатии специальной кнопки на лист помещалась новая кнопка, на ней появлялась надпись "новая кнопка", а в ячейке А3 производился подсчет количества созданных новых кнопок. Для подсчета новых кнопок объявим переменную n% (объявление в качестве целого числа) в области объявления переменных, там же поместим декларацию "Option Explicit", которая будет инициировать проверку описания встречаемых в программе переменных. В программу макроса открытия листа Модули добавим операторы присвоения нуля переменной n и записи этого значения в ячейку А3.
Option Explicit Dim n% Sub ОткрМодули() ' Функция Макрос' Макрос записан... n = 0 ActiveWindow.ScrollWorkbookTabs Position:=xlLast Sheets(" Модули ").Select Range("A3").Select ActiveCell.FormulaR1C1 = n ' Запись 0 в ячейку А3 End Sub Запишем макрос (КнопкаAdd - его программа приведена ниже), выполнив все действия по добавлению новой кнопки и изменению надписи на ней. Присвоим этот макрос кнопке с названием "Добавить новую кнопку!". Щелчки по ней будут добавлять на лист новую кнопку. Однако необходимо вести подсчет новых (добавленных) кнопок. Для этого в программе макроса КнопкаAdd необходимо значение переменной n увеличивать на единицу при каждой новой добавленной кнопке. Поэтому в программе макроса КнопкаAdd необходимо добавить операторы (ниже в распечатке программы они находятся в конце и выделены полужирным курсивом). Sub КнопкаAdd() ' КнопкаAdd Макрос ' Макрос записан.... ActiveSheet.Buttons.Add(399.75, 110.25, 127.5, 29.25).Select Selection.Characters.Text = "новая кнопка" With Selection.Characters(Start:=1, Length:=12).Font .Name = "Arial Cyr" .FontStyle = "обычный" .Size = 12 … .ColorIndex = xlAutomatic End With n = n + 1 Range("A3").Select ActiveCell.FormulaR1C1 = n End Sub Обнуление переменной n будет производиться при открытии листа Модули (распечатка программы ОткрМодули приведена выше). Щелкая по кнопке "Добавить новую кнопку!" будем на листе добавлять кнопки с надписью "новая кнопка" одну над другой – если не вести учет в ячейке А3, то не будем знать, сколько всего добавлено кнопок.
Лист с кнопками и фрагментами программ модулей.
Создать кнопку "Закрыть Книгу" на титульном листе и написать для нее макрос. В тексте этого макроса поместить дополнительные операторы (написаны ниже, полужирный шрифт): … b = MsgBox("закрыть книгу? если ДА, то закроем...", vbYesNo, "Не надо, пожалуйста!") If b = 7 Then ‘значение 7 означает выбор NO в окне диалога MsgBox ("Все-равно не сможете работать дальше!!!") GoTo 22 End If MsgBox ("Ладно, закрывайте... Что делать???") ActiveWindow.Close …
Если вместо последнего (подчёркнутого) оператора поставить GoTo 22, то закрытие книги станет невозможным.
Для справки: после ПЗ №9 в книге должны быть листы: Данные, График, 13пт, Титул, ТабУмн, Вклады, СанДень, Синус, ТаблФормулы, Текст, ДатаПропись, Список, Модули, листы контрольных работ и других расчетов. Кроме того, отдельно д.б. книга ЖурналОпераций.
Читайте также: II. Использование галереи фильтров Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|