Всем привет! Записал макрорекордером создание диаграммы: [vba]
Код
Sub Charts_Add() Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Range( _ "'Лист 1 '!$J$1:$K$516") End Subb
[/vba] но по ходу дела мне нужно несколько раз увеличивать диапазон. Каждый раз создавать диаграмму - это сколько ж их будет... Вот и возник такой вопрос - если диаграммы нет, то создать, если уже есть - просто переназначить диапазон (это знаю как). ...да, лист с диаграммой, как и сама диаграмма, могут иметь произвольное наименование.
Всем привет! Записал макрорекордером создание диаграммы: [vba]
Код
Sub Charts_Add() Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Range( _ "'Лист 1 '!$J$1:$K$516") End Subb
[/vba] но по ходу дела мне нужно несколько раз увеличивать диапазон. Каждый раз создавать диаграмму - это сколько ж их будет... Вот и возник такой вопрос - если диаграммы нет, то создать, если уже есть - просто переназначить диапазон (это знаю как). ...да, лист с диаграммой, как и сама диаграмма, могут иметь произвольное наименование.Michael_S
[offtop]...где то на просторах мирового океана... возле советской баржи вплывает советская подлодка. -Не видел, куда американцы делись? -на северо-запад пошли -че умничаешь, пальцем покажи! [/offtop]
Как?
[offtop]...где то на просторах мирового океана... возле советской баржи вплывает советская подлодка. -Не видел, куда американцы делись? -на северо-запад пошли -че умничаешь, пальцем покажи! [/offtop]Michael_S
Сообщение отредактировал Michael_S - Вторник, 12.03.2013, 20:15
Sub ttt() If ActiveSheet.ChartObjects.Count > 1 Then MsgBox "You may create a new chart" Else MsgBox ActiveSheet.ChartObjects(1).Chart.Name & " already exists" End If End Sub
[/vba]
или [vba]
Код
Sub ttt() If ActiveSheet.ChartObjects.Count > 1 Then MsgBox "You may create a new chart" Else MsgBox ActiveSheet.ChartObjects(1).Chart.Name & " already exists" End If End Sub
Андрей, в принципе можно и так, но мне нет необходимости каждый раз удалять диаграмму. Один раз создать, а дальше только диапазон изменять. Можно, конечно, применить таблицу (тогда для ее размеры нужно менять) или применить именованный диапазон (не хочется)...
Цитата (RAN)
Миш, попробуй так
Андрей, в принципе можно и так, но мне нет необходимости каждый раз удалять диаграмму. Один раз создать, а дальше только диапазон изменять. Можно, конечно, применить таблицу (тогда для ее размеры нужно менять) или применить именованный диапазон (не хочется)...Michael_S
'Построение диаграммы 1 Dim Диаграмма As Excel.ChartObject Dim Данные As Excel.Range Set Диаграмма = ActiveSheet.ChartObjects.Add(ActiveCell.Left + 5, ActiveCell.Top + 5, 440, 210) Диаграмма.Chart.ChartType = xlBarClustered 'xlDoughnut On Error Resume Next With Worksheets("Sort") Set Данные = .Range("S1:Y1, S" & i + 2 & ":Y" & i + 2) End With Диаграмма.Chart.SetSourceData _ Source:=Worksheets(Данные.Worksheet.Name).Range(Данные.Address) ', PlotBy:=xlColumns Диаграмма.Chart.SeriesCollection(1).ApplyDataLabels AutoText:=True, LegendKey:= _ False, ShowSeriesName:=False, ShowCategoryName:=False, ShowValue:=True, _ ShowPercentage:=False, ShowBubbleSize:=False ActiveSheet.ChartObjects("Диаграмма 2").Activate ActiveChart.Legend.Select Selection.Delete ActiveChart.Axes(xlValue).Select ActiveChart.Axes(xlValue).MaximumScale = 1 ' размер диограммы до 100% ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveChart.ChartArea.Select ActiveChart.PlotArea.Select Selection.Width = 400 Range("A57").Select
[/vba]
когда то генерил 100500 диаграмм в отчётах, может что то поможет из этого кода(части кода)
Michael_S,
[vba]
Код
'Построение диаграммы 1 Dim Диаграмма As Excel.ChartObject Dim Данные As Excel.Range Set Диаграмма = ActiveSheet.ChartObjects.Add(ActiveCell.Left + 5, ActiveCell.Top + 5, 440, 210) Диаграмма.Chart.ChartType = xlBarClustered 'xlDoughnut On Error Resume Next With Worksheets("Sort") Set Данные = .Range("S1:Y1, S" & i + 2 & ":Y" & i + 2) End With Диаграмма.Chart.SetSourceData _ Source:=Worksheets(Данные.Worksheet.Name).Range(Данные.Address) ', PlotBy:=xlColumns Диаграмма.Chart.SeriesCollection(1).ApplyDataLabels AutoText:=True, LegendKey:= _ False, ShowSeriesName:=False, ShowCategoryName:=False, ShowValue:=True, _ ShowPercentage:=False, ShowBubbleSize:=False ActiveSheet.ChartObjects("Диаграмма 2").Activate ActiveChart.Legend.Select Selection.Delete ActiveChart.Axes(xlValue).Select ActiveChart.Axes(xlValue).MaximumScale = 1 ' размер диограммы до 100% ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveChart.ChartArea.Select ActiveChart.PlotArea.Select Selection.Width = 400 Range("A57").Select
[/vba]
когда то генерил 100500 диаграмм в отчётах, может что то поможет из этого кода(части кода)Матраскин
в интернете опять кто-то не прав
Сообщение отредактировал Матраскин - Среда, 13.03.2013, 10:19