我有几个学校的表格中安排了数据。每所学校都在一个单独的工作表上。以下代码(录制的宏)将为引用的工作表(2002 - CJS
)生成图表。如何修改它以在任何工作表上创建图表?
Sub Gendergraph()
'
' Gendergraph Macro
'
'
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "='2002 - CJS'!$B$2"
ActiveChart.SeriesCollection(1).Values = _
"='2002 - CJS'!$D$3:$D$6,'2002 - CJS'!$D$10:$D$12"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "='2002 - CJS'!$E$2"
ActiveChart.SeriesCollection(2).Values = _
"='2002 - CJS'!$G$3:$G$6,'2002 - CJS'!$G$10:$G$12"
ActiveChart.SeriesCollection(2).XValues = _
"='2002 - CJS'!$B$3:$B$6,'2002 - CJS'!$B$10:$B$12"
End Sub
答案 0 :(得分:1)
假设工作簿中的所有工作表都需要生成图表,您可以遍历工作表并添加如下图表:
Sub Gendergraph()
'
' Gendergraph Macro
'
Dim ws as Worksheet
For Each ws in Thisworkbook.Worksheets
ws.Shapes.AddChart.Select
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "='" & ws.Name & "'!$B$2"
ActiveChart.SeriesCollection(1).Values = _
"='" & ws.Name & "'!$D$3:$D$6,'" & ws.Name & "'!$D$10:$D$12"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "='" & ws.Name & "'!$E$2"
ActiveChart.SeriesCollection(2).Values = _
"='" & ws.Name & "'!$G$3:$G$6,'" & ws.Name & "'!$G$10:$G$12"
ActiveChart.SeriesCollection(2).XValues = _
"='" & ws.Name & "'!$B$3:$B$6,'" & ws.Name & "'!$B$10:$B$12"
Next ws
End Sub
答案 1 :(得分:0)
您需要开始考虑正在进行的通用流程 - 您将图表添加到工作表中,然后设置图表的标题和数据。
使用ActiveSheet(或任何Active *对象)并不是一个很好的方法(或者其他任何东西,Excel宏录制器都会编写一些可怕的代码......)。
我将使用的方法是将工作表传递给添加图表的Sub,即
Sub Gendergraph(ws As Worksheet)
With ws.Shapes.AddChart.Chart
.ChartType = xlColumnClustered
With .SeriesCollection.NewSeries
.Name = ws.Range("B2")
.Values = Union(ws.Range("D3:D6"), ws.Range("D10:D12"))
End With
With .SeriesCollection.NewSeries
.Name = ws.Range("E2")
.Values = Union(ws.Range("G3:G6"), ws.Range("G10:G12"))
.XValues = Union(ws.Range("B3:B6"), ws.Range("B10:B12"))
End With
End With
End Sub
现在您需要的是另一个例程,它将每个工作表传递到该过程中,并且所有工作表都将添加一个图表。