Уважаемые, подскажите как изменить код, что бы диаграммы строились в определенном месте видимой области листа. или же в определенном месте. Код такой:
Скрытый текст |
---|
Код |
---|
Sub График_составной()
'
' График_составной Макрос
' строит составной график по 3 концентрациям
'все диаграммы берутся из шаблонов
' Первая диаграмма
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ApplyChartTemplate ( _
"C:\Users\User\AppData\Roaming\Microsoft\Шаблоны\Charts\график_фон1.crtx")
Dim Ячейки_001М As Excel.Range
Set Ячейки_001М = Application.InputBox("введите диапозон ячеек 0,001 М", Type:=8)
Dim Ячейки_0005М As Excel.Range
Set Ячейки_0005М = Application.InputBox("введите диапозон ячеек 0,0005 М", Type:=8)
Dim Ячейки_0001М As Excel.Range
Set Ячейки_0001М = Application.InputBox("введите диапозон ячеек0,0001 М", Type:=8)
ActiveChart.SeriesCollection(1).Name = "=""0,001 М"""
ActiveChart.SeriesCollection(1).XValues = "=ДО!$E$98:$Q$98"
ActiveChart.SeriesCollection(1).Values = Ячейки_001М
ActiveChart.SeriesCollection(1).XValues = "=ДО!$E$96:$Q$96"
ActiveChart.SeriesCollection(2).Name = "=""0,0005 М"""
ActiveChart.SeriesCollection(2).XValues = "=ДО!$E$96:$Q$96"
ActiveChart.SeriesCollection(2).Values = Ячейки_0005М
ActiveChart.SeriesCollection(3).Name = "=""0,0001 М"""
ActiveChart.SeriesCollection(3).XValues = "=ДО!$E$96:$Q$96"
ActiveChart.SeriesCollection(3).Values = Ячейки_0001М
'' вторая диаграмма
'
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ApplyChartTemplate ( _
"C:\Users\User\AppData\Roaming\Microsoft\Шаблоны\Charts\Диаграмма1.crtx")
Dim Ячейки_001М_70мин As Excel.Range
Set Ячейки_001М_70мин = Application.InputBox("введите диапозон ячеек 0,001 М начиная с 70 минуты", Type:=8)
Dim Ячейки_0005М_70мин As Excel.Range
Set Ячейки_0005М_70мин = Application.InputBox("введите диапозон ячеек 0,0005 М начиная с 70 минуты", Type:=8)
Dim Ячейки_0001М_70мин As Excel.Range
Set Ячейки_0001М_70мин = Application.InputBox("введите диапозон ячеек0,0001 М начиная с 70 минуты", Type:=8)
ActiveChart.SeriesCollection(1).Name = "=""0,001 М"""
ActiveChart.SeriesCollection(1).Values = Ячейки_001М_70мин
ActiveChart.SeriesCollection(1).XValues = "=ДО!$L$96:$Q$96"
ActiveChart.SeriesCollection(2).Name = "=""0,0005 М"""
ActiveChart.SeriesCollection(2).Values = Ячейки_0005М_70мин
ActiveChart.SeriesCollection(3).Name = "=""0,0001 М"""
ActiveChart.SeriesCollection(3).Values = Ячейки_0001М_70мин
' 3-я диаграмма
'
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ApplyChartTemplate ("C:\Users\User\AppData\Roaming\Microsoft\Шаблоны\Charts\Диаграмма1_каждые 20мин.crtx")
Dim Ячейки_001М_80мин As Excel.Range
Set Ячейки_001М_80мин = Application.InputBox("введите диапозон ячеек 0,001 М 80, 100 и 120 мин", Type:=8)
Dim Ячейки_0005М_80мин As Excel.Range
Set Ячейки_0005М_80мин = Application.InputBox("введите диапозон ячеек 0,0005 М 80, 100 и 120 мин", Type:=8)
Dim Ячейки_0001М_80мин As Excel.Range
Set Ячейки_0001М_80мин = Application.InputBox("введите диапозон ячеек0,0001 М 80, 100 и 120 мин", Type:=8)
ActiveChart.SeriesCollection(1).Name = "=""0.001 М"""
ActiveChart.SeriesCollection(1).Values = Ячейки_001М_80мин
ActiveChart.SeriesCollection(2).Name = "=""0,0005 М"""
ActiveChart.SeriesCollection(2).Values = Ячейки_0005М_80мин
ActiveChart.SeriesCollection(3).Name = "=""0,0001 М"""
ActiveChart.SeriesCollection(3).Values = Ячейки_0001М_80мин
ActiveChart.SeriesCollection(1).XValues = "={80;100;120}"
End Sub |
|
Соответственно все диаграммы строятся на одном и том же месте, друг за другом.
Метод записи макрорекодером дает такое решение
Код |
---|
ActiveSheet.Shapes("Диаграмма 1093").IncrementLeft -204.
|
которое не работает
так как здесь идет указание на диаграмму, которая уже была создана.
пробовал присвоить переменную с именем диаграммы, что бы затем ссылаться на неё
Код |
---|
t = ActiveChart.Name
ActiveSheet.Shapes(t).IncrementLeft -204. |
Увы, и этот метод снова не работает.
Подскажите как быть в этом случае?.