每当我运行宏来绘制图表时,如何在excel中的预定位置绘制图表?

时间:2019-03-17 16:16:05

标签: excel vba charts excel-charts

当我运行宏来绘制图表时,我需要在工作表中的预定位置绘制图表。问题是图表以一种奇怪的方式自动绘制,我不喜欢那样。我想确保可以预定义运行宏时要绘制图表的确切位置。我在这里附加了2张图像,其中1张图像显示了当前的绘制方式,另一张显示了我希望如何绘制图表。任何帮助将不胜感激。

这就是我希望图表显示在工作表上的方式: This is how I want the charts to be shown on the sheet

这是当前的显示方式,一个饼图与另一个饼图重叠,并且折线图也使宏按钮模糊 This is how it's currently showing up, with one pie chart overlapping the other and the line chart obscuring the macro buttons as well

这是我使用的代码,从折线图开始,然后是饼图。我是VBA和编码的新手,所以请原谅代码结构。

$str ='mr (3_22) mrs (1_12) miss (2_4)';
$re ='';
if(preg_match_all('/(\([^\)]+\))/i', $str, $mt)){
  $re = implode('', $mt[0]);
}
echo $re; // (3_22)(1_12)(2_4)

1 个答案:

答案 0 :(得分:0)

您的代码可以通过多种方式使用一些帮助。为了回答您的问题,我将忽略所有这些,并修复一段代码。这是我要替换的东西:

' PieC Macro

Range("C10:D11").Select
ActiveSheet.Shapes.AddChart2(262, xl3DPie).Select
ActiveChart.SetSourceData Source:=Range("'Model Calculations'!$C$10:$D$11")

With ActiveChart
  'chart name
  .HasTitle = True
  .ChartTitle.Characters.Text = "Continuous Review"
  '  .Name = "Continuous Chart"
End With

我将首先声明并分配一些变量,然后创建,填充和定位图表。

Dim WkSht As Worksheet
Set WkSht = Worksheets("Model Calculations")
WkSht.Activate

Dim rChartData As Range
Set rChartData = WkSht.Range("C10:D11")

Dim rChartCover As Range
Set rChartCover = WkSht.Range("F10:K18")

Dim NewChart As Chart
Set NewChart = WkSht.Shapes.AddChart2(262, xl3DPie).Chart

With NewChart
  .SetSourceData rChartData

  With .Parent
    .Left = rChartCover.Left
    .Top = rChartCover.Top
    .Width = rChartCover.Width
    .Height = rChartCover.Height
  End With
End With

您可以替换为:

Set WkSht = Worksheets("Model Calculations")
WkSht.Activate

与此:

Set WkSht = ActiveSheet

使其更通用,如果您知道结果图表的位置和大小,则可以插入这些图表,而不用使用给定范围的位置和大小(例如我上面使用的rChartCover)。