2016-01-26 199 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 

然後繼續。