Теперь создадим процедуру, которая проверяла бы количество выделенных столбцов данных, и если выделено два столбца, то строила бы круговую диаграмму, а если выделено три столбца - гистограмму (столбчатую диаграмму). Для этого выполните следующие действия.
Измените заголовок столбца В - в ячейку В1 введите 1-й квартал.
Заполните шесть ячеек столбца С: в ячейку С1 введите 2-й квартал, в ячейку С2 введите число 1000, в ячейку C3 - 1150, в С4 - 875, в С5 - 1270 и в ячейку С6 - 1395.
Удалите из рабочего листа все диаграммы.
Выделите диапазон А1:С6 и выполните команду Сервис > Макрос > Начать запись. В диалоговом окне Запись макроса задайте имя макроса, например Гистограмма. Щелкните на кнопке ОК для начала записи макроса.
Щелкните на кнопке Мастер диаграмм стандартной панели инструментов. Появится первое окно мастера диаграмм.
Выберите тип диаграммы Гистограмма. Щелкните на кнопке Готово для создания диаграммы.
Остановите запись макроса.
Теперь у вас есть два макроса-процедуры для создания диаграмм: КруговаяДиаграмма и Гистограмма. Скомбинируем эти две процедуры в одну, которая бы строила диаграмму того или иного типа в зависимости от количества выделенных столбцов. Нажмите <Alt+F11> для перехода в редактор Visual Basic. Создайте новую процедуру с именем МояДиаграмма. Введите следующий код в эту процедуру:
Dim rCurrentRange As Range
Set rCurrentRange = Selection
If Selection.Columns.Count = 2 Then
Перейдите в процедуру КруговаяДиаграмма и скопируйте следующие строки кода:
He забывайте, что в редакторе Visual Basic для копирования, вырезания и вставки кода можно использовать стандартные комбинации клавиш: <Ctrl+C>, <Ctrl+X> и <Ctrl+V> соответственно.
Вставьте скопированные строки в процедуру МояДиаграмма после оператора If. После вставленных строк в новой строке введите код
ElseIf Selection.Columns.Count > 2 Then
Перейдите в процедуру Гистограмма и скопируйте оттуда строки
Вставьте эти строки в процедуру МояДиаграмма после оператора ElseIf. В операторе ActiveChart.SetSourceData замените Sheets("Лист1").Range("А1:С6") на rCurrentRange. Далее с новой строки введите следующее:
Else
MsgBox "Выделенный диапазон не подходит для построения диаграммы"
Exit Sub
End If
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Объемы продаж"
.ChartTitle.Select
End With
Из процедуры КруговаяДиаграмма скопируйте следующий код:
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 With. Полный код процедуры показан в листинге 18.2.