[an error occurred while processing this directive] | |
1-й час. Знакомство с Visual Basic for Applications 3-й час. Работа с элементами управления 4-й час. Переменные и константы 6-й час. Логика условных операторов 7-й час. Циклические вычисления 9-й час. Основные объекты Excel 11-й час. Редактор Visual Basic 15-й час. Автоматизация экранных форм 20-й час. Получение внешних данных |
18-й час. ДиаграммыПостроение диаграмм - одно из самых популярных средств Excel. Разработчики часто используют это средство Excel построения диаграмм в своих приложениях. В этом часе мы запишем макрос, создающий диаграмму, а затем исследуем и изменим код этого макроса в редакторе Visual Basic. В этом часе будут рассмотрены следующие вопросы.
Создание диаграммЛюбой пользователь Excel знаком с процессом построения диаграмм. А если он знает, как построить диаграмму, то может и автоматизировать процесс построения диаграмм. "Как?", - спросите вы. Очень просто: запишите макрос, выполняющий весь процесс создания диаграммы, а затем усовершенствуйте код этого макроса. Запись макроса построения диаграммПоследуем своему же совету и запишем макрос, выполняющий построение диаграммы. Но сначала надо создать таблицу данных, на основе которых будет построена диаграмма, и заранее решить, диаграмму какого типа мы будем строить, и продумать способы ее форматирования. Для чистоты эксперимента закройте все открытые рабочие книги и откройте новую рабочую книгу. В новой книге создайте таблицу данных, показанную на рис. 18.1. По этим данным построим круговую диаграмму. Выделите диапазон А1:В6 и выполните команду Сервис > Макрос > Начать запись. В диалоговом окне Запись макроса введите имя макроса КруговаяДиаграмма, а в списке Сохранить в выберите пункт Эта книга. Теперь все готово к началу записи макроса. Щелкните на кнопке ОК.
Рис. 18.1. Таблица данных, на основе которой будет построена круговая диаграмма
Рис. 18.2 Диаграмма, созданная с помощью мастера диаграмм Запустите мастера диаграмм и в первом диалоговом окне мастера выберите круговую диаграмму. Пропустите второе окно мастера, щелкнув на кнопке Далее. В третьем диалоговом окне мастера перейдите на вкладку Подписи данных и установите переключатель Доля. Щелкните на кнопке Далее. В последнем окне мастера укажите, что диаграмму следует поместить на существующем рабочем листе Лист1. Закройте диалоговое окно мастера, щелкнув на кнопке Готово. На этом построение диаграммы не заканчивается. Теперь отформатируем заголовок диаграммы. Дважды щелкните на заголовке - откроется диалоговое окно Формат названия диаграммы. Прейдите на вкладку Шрифт, задайте полужирное курсивное начертание шрифта и установите размер шрифта 14 пунктов. Закройте диалоговое окно Формат названия диаграммы и остановите запись макроса. Построенная диаграмма показана на рис. 18.2. Теперь исследуем код записанного макроса и посмотрим, как можно его усовершенствовать. Код макросаНажав комбинацию клавиш <Alt+F11>, перейдите в редактор Visual Basic. В окне проектов откройте текущую рабочую книгу, а затем папку Modules (Модули), в которой найдете процедуру КруговаяДиаграмма. Полный код этой процедуры приведен в листинге 18.1. Листинг 18.1. Процедура КруговаяДиаграмма
Рассмотрим код этой процедуры. Оказывается, первым действием, выполненным при записи макроса, было применение метода Add (Добавить) к коллекции Charts (Диаграммы):
Итак, мы узнали тип созданного объекта и элементов какой коллекции он является. Все остальное в этой процедуре - задание свойств этого объекта и применение к нему методов. ActiveChart (Активная диаграмма) является свойством объекта Application (Приложение), которое возвращает текущую диаграмму. В строке 3 свойству ChartType (Тип диаграммы) присвоено значение xlPie, что в Excel обозначает круговую диаграмму. В следующей строке кода с помощью метода SetSourceData (Установка источника данных) задается диапазон ячеек с данными, на основе которых строится диаграмма. Метод Location (Положение) помещает активную диаграмму в указанный рабочий лист (или на отдельный лист диаграмм, если необходимо). Наконец, метод ApplyDataLabels (Применить подписи данных) выполняет те установки, которые вы сделали в третьем диалоговом окне мастера диаграмм на вкладке Подписи данных. Далее процедура устанавливает свойства еще одного объекта: объекта ChartTitle (Заголовок диаграммы). Сначала этот объект выбирается (строка 9), затем задаются параметры шрифта заголовка. Отметим, что, хотя на вкладке Шрифт диалогового окна Формат названия диаграммы мы только задали размер шрифта и его начертание, в процедуре представлены все опции этой вкладки (строки 12 - 22). Изменение кода макросаВыполним макрос еще раз.
Рис. 18.3. Теперь процедура стада более гибкой и может работать с любым диапазоном данных Усовершенствованная процедура построения диаграммТеперь создадим процедуру, которая проверяла бы количество выделенных столбцов данных, и если выделено два столбца, то строила бы круговую диаграмму, а если выделено три столбца - гистограмму (столбчатую диаграмму). Для этого выполните следующие действия.
Теперь у вас есть два макроса-процедуры для создания диаграмм: КруговаяДиаграмма и Гистограмма. Скомбинируем эти две процедуры в одну, которая бы строила диаграмму того или иного типа в зависимости от количества выделенных столбцов. Нажмите <Alt+F11> для перехода в редактор Visual Basic. Создайте новую процедуру с именем МояДиаграмма. Введите следующий код в эту процедуру:
Перейдите в процедуру КруговаяДиаграмма и скопируйте следующие строки кода:
He забывайте, что в редакторе Visual Basic для копирования, вырезания и вставки кода можно использовать стандартные комбинации клавиш: <Ctrl+C>, <Ctrl+X> и <Ctrl+V> соответственно. Вставьте скопированные строки в процедуру МояДиаграмма после оператора If. После вставленных строк в новой строке введите код
Перейдите в процедуру Гистограмма и скопируйте оттуда строки
Вставьте эти строки в процедуру МояДиаграмма после оператора ElseIf. В операторе ActiveChart.SetSourceData замените Sheets("Лист1").Range("А1:С6") на rCurrentRange. Далее с новой строки введите следующее:
Из процедуры КруговаяДиаграмма скопируйте следующий код:
Вставьте этот код в процедуру МояДиаграмма после оператора End With. Полный код процедуры показан в листинге 18.2. Листинг 18.2. Процедура МояДиаграмма
При создании этой процедуры мы использовали в основном копирование и вставку кода из ранее созданных макросов. "Изюминкой" этой процедуры является применение оператора If. Этот оператор проверяет значение свойства Columns.Count, равное количеству столбцов в выделенном диапазоне ячеек. Если это значение равно 2, то строится круговая диаграмма, если больше двух - строится гистограмма, если выделен один столбец, то выводится соответствующее окно сообщения. Работу этого оператора можно представить в виде следующей схемы:
После создания диаграммы процедура добавляет заголовок диаграммы и форматирует его. Для тестирования созданной процедуры перейдите в рабочую книгу и удалите все ранее созданные диаграммы. Выделите диапазон А1:С6 и выполните процедуру МояДиаграмма. Результат показан на рис. 18.4.
Рис. 18.4. Так как выделенный диапазон содержит более двух столбцов, то процедура построила гистограмму Удалите гистограмму и выделите диапазон А1:В5. Снова выполните процедуру МояДиаграмма. Теперь будет создана круговая диаграмма. Сохраните рабочую книгу с именем Час18. РезюмеЭтот час был посвящен построению диаграмм. Вы узнали о коллекции Charts (Диаграммы) и объектах Chart, а также об их свойствах и методах. В этом часе мы написали очень мало кода: сначала записали пару макросов, а потом просто использовали код этих макросов. Такой подход сэкономил нам много времени, которое пришлось бы потратить на "добывание" сведений об объектах, их свойствах и методах, необходимых для построения диаграмм. Многие разработчики приложений VBA используют этот подход: сначала записывают необходимые макросы, которые по возможности выполняли бы задуманное разработчиком, а затем изменяют и используют код этих макросов. Вопросы и ответыВопрос. Для создания процедуры, которая бы строила диаграммы, следует сначала записать макрос или можно написать код нужной процедуры с нуля? Ответ. Если вы можете написать код такой процедуры с нуля, то такой вопрос не должен стоять перед вами: делайте так, как вам удобнее. Подход, представленный в этом часе, показывает простой путь создания сложных процедур и значительно экономит ваше время. Вопрос. Нетрудно заметить, что в коде макросов много "лишних" операторов. Например, если в диалоговом окне задать какой-нибудь параметр, то в коде макроса записываются все опции этого окна. Можно ли избавиться от этих "липших" операторов? Ответ. Действительно, код макросов не всегда эффективен. Но вы можете отредактировать этот код и удалить "лишнее". Но прежде чем удалять "ненужные" операторы, сделайте их комментариями (т.е. поставьте перед ними одинарную кавычку), а затем выполните макрос. Если в выполнении такого макроса вы не заметили никаких отклонений от "нормы", то только после этого удаляйте лишнее. ПрактикумС помощью тестов и упражнений вы проверите, насколько хорошо усвоили изложенный материал. Ответы на вопросы смотрите в Приложении. Тесты
УпражнениеСоздайте экранную форму с пятью переключателями (рис. 18.5):
Рис. 18.5. Экранная форма для упражнения Создайте процедуру с именем ВыборТипаДиаграмм, которая выводила бы экранную форму. В экранной форме, в зависимости от числа столбцов в выделенном диапазоне ячеек, должен быть предустановлен или переключатель Круговая диаграмма, или Гистограмма. После выбора пользователем типа диаграммы и щелчка на кнопке ОК формы диаграмма выбранного типа должна быть построена. Совет: объявите переменную, содержащую выделенный диапазон, как глобальную (public) переменную. |
[an error occurred while processing this directive] |