VBA-一次复制多个图表

时间:2018-05-22 19:12:44

标签: excel excel-vba charts vba

我在工作表上总共有10个图表,其中5个是SI单位,另外5个是ANSI。每个都分为两个单独的列。 5个ANSI图表在“F”列中垂直对齐。 5个SI图表在“O”列中垂直对齐。

我只想复制“F”栏中的图表。

我如何一次性复制它们?

我目前一次复制一个

代码:

wb.Sheets(w).ChartObjects("Chart 9").Chart.ChartArea.Copy
With ThisWorkbook.Worksheets("Plots")
    .Activate
    .Range( "F2").Select
    .Pictures.Paste
End With
wb.Sheets(w).ChartObjects("Chart 13").Chart.ChartArea.Copy
With ThisWorkbook.Worksheets("Plots")
    .Activate
    .Range("F17").Select
    .Pictures.Paste
End With

wb.Sheets(w).ChartObjects("Chart 14").Chart.ChartArea.Copy
With ThisWorkbook.Worksheets("Plots")
    .Activate
    .Range("F32").Select
    .Pictures.Paste
End With

wb.Sheets(w).ChartObjects("Chart 15").Chart.ChartArea.Copy
With ThisWorkbook.Worksheets("Plots")
    .Activate
    .Range("F47").Select
    .Pictures.Paste
End With

wb.Sheets(w).ChartObjects("Chart 16").Chart.ChartArea.Copy
With ThisWorkbook.Worksheets("Plots")
    .Activate
    .Range("F64").Select
    .Pictures.Paste
End With

如何安排的例子; enter image description here

1 个答案:

答案 0 :(得分:1)

在一个循环中你可以做到:

Dim chartPasteRow as integer

chartPasteRow = 2
For each chartName in Array("Chart 9", "Chart 13", "Chart 14", "Chart 15", "Chart 16")
    wb.Sheets(w).ChartObjects(chartName).Chart.ChartArea.Copy
    ThisWorkbook.Worksheets("Plots").Range("F" & chartPasteRow).PasteSpecial xlPasteValues
    chartPasteRow = chartPasteRow + 15
Next chartName

如果要粘贴所有图表而不必指定,可以执行以下操作:

Dim chartPasteRow as integer

chartPasteRow = 2
For each cht In wb.Sheets(w).ChartObjects
    cht.Chart.ChartArea.Copy
    ThisWorkbook.Worksheets("Plots").Range("F" & chartPasteRow).PasteSpecial xlPasteValues
    chartPasteRow = chartPasteRow + 15
Next cht

这假设每个图表将每15行粘贴一次。