调整图块VBA的大小

时间:2016-06-14 13:34:04

标签: excel vba excel-vba

我在使用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的使用方式有关。感谢您的所有帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

问题是在再次调用ActiveChart时创建的,此问题的原因是它无法确定哪个图表处于活动状态。解决方案是使用ActiveChart.Parent.Name = "Test",然后再次调用ActiveChart之前,您必须使用:ActiveSheet.Shapes("Test").Select。这里的关键是,当使用ActiveSheets.Shapes()时,重复项不会得到很好的处理。