excel - 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
解决方案
在一个循环中,你可以这样做:
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 行粘贴一次。
推荐阅读
- excel - Excel查找此值和此值以及它们相遇的位置输入新值
- ldap - ASP.NET 样板 - Ldap 身份验证问题
- r - R:如何使用 XLConnect 的 setCellFormula 函数编写非英语的 excel 公式?
- javascript - SVG`
` javascript 动画未按预期工作 - assembly - 程序集标签前缀
- c# - 用脚本语言实现简洁的 IF 条件
- android - 如何使用颤振框架获取手机号码?
- reactjs - 将服务器端渲染添加到现有的 React 应用程序
- android - Firebase 云消息传递如何在 Android 上运行
- eclipse - Eclipse 的嵌入式 Maven 不接受运行时参数