КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Построение диаграммы на основе данных нескольких рабочих листов
Листинг 5.11. Одновременное создание нескольких диаграмм Sub ManyCharts() Dim intTop As Long, intLeft As Long Dim intHeight As Long, intWidth As Long Dim sheet As Worksheet Dim lngFirstRow As Long ' Первая строка с данными Dim intSerie As Integer ' Текущая категория диаграммы Dim strErrorSheets As String ' Список листов, для которых _ не удалось построить диаграммы
intTop = 1 ' Верхняя точка первой диаграммы intLeft = 1 ' Левая точка каждой диаграммы intHeight = 180 ' Высота каждой диаграммы intWidth = 300 ' Ширина каждой диаграммы
' Постоение диаграммы для каждого листа, кроме текущего For Each sheet In ActiveWorkbook.Worksheets If sheet.Name <> ActiveSheet.Name Then ' Первый заполненный ряд lngFirstRow = 3 ' Первая категория intSerie = 1
On Error GoTo DiagrammError ' Добавление и настройка диаграммы With ActiveSheet.ChartObjects.Add _ (intLeft, intTop, intWidth, intHeight).Chart Do Until IsEmpty(sheet.Cells(lngFirstRow + intSerie, 1)) ' Создание ряда .SeriesCollection.NewSeries ' Значения для ряда .SeriesCollection(intSerie).Values = _ sheet.Range(sheet.Cells(lngFirstRow + intSerie, 2), _ sheet.Cells(lngFirstRow + intSerie, 4)) ' Диапазон данных для подписей .SeriesCollection(intSerie).XValues = _ sheet.Range("B3:D3") ' Название ряда (берется из столбца "A" таблицы с данными) .SeriesCollection(intSerie).Name = sheet.Cells(_ lngFirstRow + intSerie, 1) intSerie = intSerie + 1 Loop
' Настройка внешнего вида диаграммы .ChartType = xl3DColumnClustered .ChartGroups(1).GapWidth = 20 .PlotArea.Interior.ColorIndex = xlNone .ChartArea.Font.Size = 9 ' Диаграмма с легендой .HasLegend = True ' Заголовок .HasTitle = True .ChartTitle.Characters.Text = sheet.Range("A1") ' Задание диапазона значений на осях .Axes(xlValue).MinimumScale = 0 .Axes(xlValue).MaximumScale = 120000 ' Стиль линий сетки (прерывистый) .Axes(xlValue).MajorGridlines.Border. _ LineStyle = xlDot End With On Error GoTo 0 ' Сдвиг верхней точки следующей диаграммы на высоту _ текущей диаграммы intTop = intTop + intHeight AfterError: End If Next sheet
If strErrorSheets <> "" Then ' Отобразим список листов, для которых не построили диаграммы MsgBox "Не удалось построить диаграммы для листов:" & Chr(13) _ & strErrorSheets, vbExclamation End If Exit Sub DiagrammError: ' Добавление в список имени листа, для которого не смогли _ построить диаграмму (ошибка в данных для диаграммы) strErrorSheets = strErrorSheets & sheet.Name & Chr(13) ' Удаление пустой диаграммы на текущем листе ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Delete ' Продолжаем работу с другими листами Resume AfterError End Sub
Дата добавления: 2015-06-25; Просмотров: 290; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |