Выполним макрос еще раз.
- Выделите ячейки А1:B3.
- Выполните макрос КруговаяДиаграмма. Что получилось? Есть ли какие-нибудь отличия в последней диаграмме и предыдущей, когда выделялись шесть строк данных? Отличий нет, поэтому надо как-то изменить процедуру, чтобы она строила диаграмму на основании только тех данных, которые мы выделяем.
- Удалите все диаграммы из рабочего листа.
- Вернитесь к процедуре КруговаяДиаграмма. Нетрудно найти место в процедуре, которое надо как-то изменить, - это оператор, задающий источник данных для построения диаграммы:
ActiveChart.SetSourceData _
Source:=Sheets("Лист1").Range("А1:В6"), _
PlotBy:=xlColumns
- Внесем изменения в процедуру. В верхней части процедуры введите две строки кода с объявлением и заданием новой переменной:
Dim rCurrentRange As Range
Set rCurrentRange = Selection
- В операторе задания источника данных замените непосредственное указание диапазона ячеек Sheets("Лист1").Range("A1:B6") на переменную rCurrentRange:
ActiveChart.SetSourceData _
Source:= rCurrentRange, PlotBy:=xlColumns
- Вернитесь в рабочую книгу.
- Выделите диапазон А1:B3. Выполните макрос КруговаяДиаграмма. В результате будет построена круговая диаграмма всего с двумя секторами (рис. 18.3).

Рис. 18.3. Теперь процедура стада более гибкой и может работать с любым диапазоном данных