我在使用VBA调整图像大小时遇到问题。我尝试了一堆方法,这是我正在使用的代码:
Sub Macro17()
'
' Macro17 Macro
'
'
Call Macro1
Call Macro2
End Sub
Sub Macro1()
Sheets("Data").Select
Range("A77:N79").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("A58:N58,A77:N79")
With ActiveChart
'chart name
.SetElement (msoElementChartTitleAboveChart)
.ChartTitle.Text = " Plot 1"
'X axis name
'.Axes(xlCategory, xlPrimary).HasTitle = True
'.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X-Axis"
'y-axis name
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y - label"
End With
ActiveChart.Parent.Cut
Sheets("Plots").Select
ActiveSheet.Paste Destination:=Worksheets("Plots").Range("B2:B5")
With ActiveChart.Parent
.Height = 369
.Width = 520
End With
End Sub
Sub Macro2()
Sheets("Data").Select
Range("A83:N85").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("A58:N58,A83:N85")
With ActiveChart
'chart name
.SetElement (msoElementChartTitleAboveChart)
.ChartTitle.Text = " Plot Two"
'X axis name
'.Axes(xlCategory, xlPrimary).HasTitle = True
'.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X-Axis"
'y-axis name
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y - label"
End With
ActiveChart.Parent.Cut
Sheets("Plots").Select
ActiveSheet.Paste Destination:=Worksheets("Plots").Range("B30:B35")
With ActiveChart.Parent
.Height = 369
.Width = 520
End With
ActiveChart.Axes(xlCategory).TickLabelPosition = xlTickLabelPositionLow
End Sub
所以我使用Macro17,同时调用Macro1和Macro2,然后绘制相应的数据,我的问题是,当我调用Macro17时,只有第一个图更大。当我使用F8(在Windows中)使用调试器运行两个宏时,我没有任何问题,并且代码运行时已经过了,但这非常有效。它可能与ActiveChart.Parent
的使用方式有关。感谢您的所有帮助,非常感谢。
答案 0 :(得分:0)
问题是在再次调用ActiveChart
时创建的,此问题的原因是它无法确定哪个图表处于活动状态。解决方案是使用ActiveChart.Parent.Name = "Test"
,然后再次调用ActiveChart
之前,您必须使用:ActiveSheet.Shapes("Test").Select
。这里的关键是,当使用ActiveSheets.Shapes()
时,重复项不会得到很好的处理。