Усовершенствованная процедура построения диаграмм
Цель работы: приобретение навыков записи макроса, создающего диаграмму, исследования и изменения кода этого макроса в VBA.
1 Теоретические сведения
Построение диаграмм – одно из самых популярных средств Excel. Можно автоматизировать процесс построения диаграмм. Для этого необходимо записать макрос, а затем усовершенствовать процедуру построения диаграмм. Код макроса построения круговой диаграммы по таблице 6.1 Таблица 6.1
будет иметь вид: Sub КруговаяДиаграмма () Charts.Add ActiveChart.ChartType = xlPie ActiveChat.SetSourceData _ Sourse: = Sheets(“Лист1”).Range(“A1: B6”), PlotBy: = xlColumns ActiveChart.Location Where: = xlLocationAsObject, Name: = “Лист1” ActiveChart.ApplyDataLabels _ Type: = xlDataLabelsShowPercent, LegendKey: = False, _ HasLeaderLines: = True ActiveChart.ChartTitle.Select Selection.AutoScaleFont = True With Selection.Font .Name = “Arial”
.FontStyle = “полужирный курсив” .Size = 14 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .BackGround = xlAutomatic End With End Sub Для того чтобы процедура строила диаграмму на основании только тех данных, которые мы выделяем, необходимо изменить оператор, задающий источник данных для построения диаграммы: ActiveChart.SetSourceData _ Sourse: = Sheets(“Лист1”).Range(“A1: B6”), _ PlotBy: = xlColumns Внесем изменения в процедуру. В верхней части процедуры введем две строки кода с объявлением и заданием новой переменной: Dim rCurrentRange As Range Set rCurrentRange = Selection В операторе задания источника данных замените непосредственное указание диапазона ячеек Sheets(“Лист1”).Range(“A1: B6”) на переменную rCurrentRange: ActiveChart.SetSourceData _ Sourse: = rCurrentRange, PlotBy: = xlColumns В результате вышеуказанных изменений будет построена круговая диаграмма на основании только тех данных, которые выделяются. Для создания еще более усовершенствованной процедуры диаграмм, т.е. такой процедуры, которая проверяла бы количество выделенных столбцов данных, и если выделено два столбца, то строила бы круговую диаграмму, а если выделено три столбца – гистограмму, записывается еще один макрос построения гистограммы, а затем комбинируются две процедуры в одну. При создании такой процедуры используется в основном копирование и вставка кода из ранее созданных макросов. “Изнанкой” этой процедуры является применение оператора If. Этот оператор проверяет значение свойства Columns.Count, равное количеству столбцов в выделенном диапазоне ячеек. Если это значение равно 2, то строится круговая диаграмма; если больше двух – строится гистограмма; если выделен один столбец, то выводится соответствующее окно сообщения. Работу этого оператора можно представить в виде следующей схемы: If Selection.Columns.Count = 2 Then 'код создания круговой диаграммы Else Selection.Columns.Count > 2 Then 'код создания гистограммы Else MsgBox “Выделенный диапазон не подходит для построения диаграммы” Exit Sub End If
2 Практическое задание
З а д а н и е 1 Создайте экранную форму с пятью переключателями (рисунок 6.1):
Рисунок 6.1
- Круговая диаграмма; - Объемная круговая диаграмма; - Гистограмма; - Гистограмма с накоплением; - Объемная гистограмма с накоплением. Создайте процедуру с именем ВыборТипаДиаграмм, которая выводила бы экранную форму. В экранной форме, в зависимости от числа столбцов в выделенном диапазоне ячеек, должен быть предустановлен или переключатель Круговая диаграмма, или Гистограмма. После выбора пользователем типа диаграммы и щелчка на кнопке ОК формы диаграмма выбранного типа должна быть построена. Совет: объявите переменную, содержащую выделенный диапазон, как глобальную (public) переменную.
3 Контрольные вопросы
3.1 Какой оператор VBA используется для создания диаграммы? 3.2 Какое свойство объекта Application возвращает текущую активную диаграмму? 3.3 Какое свойство объекта Chart определяет тип создаваемой диаграммы? 3.4 Какой метод объекта Chart управляет данными, отображаемыми в диаграмме?
Лабораторная работа 7
|