2016-01-26 159 views
0

我写了一个宏,它导入一个大的CSV数据文件,组织数据并创建图表。Excel VBA宏复制和粘贴图表有时会工作

  • 复制模板图
  • 粘贴另一个选项卡上
  • 重命名图表
  • 添加数据系列
  • 重复数据

问题的每一列:这些图​​表是由创建我遇到的情况是,当我正常运行宏时,它实际上并不复制模板图表。所以在粘贴时剪贴板上没有任何内容,这会引发错误。下面是实际的代码:

wbGen.Sheets("Dashboard").ChartObjects("Chart 0").Activate 
ActiveChart.ChartArea.Copy 
wbGen.Sheets("Charts").Activate 
ActiveSheet.Cells(iRotor * 16 - 31, iChartA * 7 - 6).Select 
ActiveSheet.Paste 'Debug mode points to this line 
ActiveSheet.ChartObjects("Chart 0").Activate 
ActiveSheet.Shapes("Chart 0").Name = "Chart " & iChart 

这里的难题是:如果我点击Debug,回光标上面的第一行,并创下继续,那么代码执行完美。我无法弄清楚它为什么在调试模式下工作,但通常不会。我感谢您提供的任何帮助。

作为一个侧面说明,我试图摆脱ActivateSelect陈述并没有取得丰硕成果。任何帮助,我可以在该地区也将不胜感激。运行该代码时

+0

你想在错误行上面的行中做什么? – Kathara

+0

当代码不起作用时,“iRotor”和“iChartA”的值是多少? –

+0

第4行定义粘贴图表的位置。例如,第一次迭代(当代码不起作用时)具有'iRotor = 2'和'iChartA = 1'。这会导致选择单元格(1,1)并将图表粘贴到那里。在下一次迭代中,'iRotor = 2'和'iChartA = 2',所以下一个图表被粘贴在Cell(1,8)上。 –

回答

0

关闭VBE编辑器...

Sheets("Dashboard").ChartObjects("Chart 0").Copy 
Sheets("Charts").Select 
Sheets("Charts").Cells(iRotor * 16 - 31, iChartA * 7 - 6).Select 
Sheets("Charts").PasteSpecial Format:="Microsoft Office Drawing Object", Link:=False, DisplayAsIcon:=False 
0

尝试是这样的:

Dim chtTemplate As Chart 
Set chtTemplate = wbGen.Sheets("Dashboard").ChartObjects("Chart 0").Chart 
DoEvents 
chtTemplate.ChartArea.Copy 

Dim chtTemplate As ChartObject 
Set chtTemplate = wbGen.Sheets("Dashboard").ChartObjects("Chart 0") 
DoEvents 
chtTemplate.Copy 

然后继续。