使用单元格定义变量生成Excel图形

使用单元格定义变量生成Excel图形,excel,graph,vbscript,cells,Excel,Graph,Vbscript,Cells,我一直在尝试使用宏从一个工作表生成多个图形。 为此,我注册了一个图形的创建,然后我用命令Cells2,R更改了固定单元格,例如$B$55,其中R是一个计数器,用于从一列移动到下一步3。 宏始终在标记为**的同一点被阻止: Sub Graph() ' ' Graph Macro ' ' Dim R As Long For R = 2 To 179 ActiveSheet.Cells(22, R).Select ActiveSheet.Range(Selection, Selection.En

我一直在尝试使用宏从一个工作表生成多个图形。 为此,我注册了一个图形的创建,然后我用命令Cells2,R更改了固定单元格,例如$B$55,其中R是一个计数器,用于从一列移动到下一步3。 宏始终在标记为**的同一点被阻止:

Sub Graph()
'
' Graph Macro
'

'
Dim R As Long

For R = 2 To 179

ActiveSheet.Cells(22, R).Select
ActiveSheet.Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.SmallScroll Down:=-102
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.PlotArea.Select
ActiveChart.ApplyChartTemplate ( _
    "C:\Users\254088\AppData\Roaming\Microsoft\Templates\Charts\Total_Lim.crtx")
ActiveChart.ChartTitle.Select
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(1).Name = "='StatAnalysis'!$B$3"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "='StatAnalysis'!$A$4"
ActiveChart.SeriesCollection(2).XValues = "={0,120}"
**ActiveChart.SeriesCollection(2).Values = _
    "='StatAnalysis'!Cells(4,R),'StatAnalysis'!Cells(4,R)"**
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).Name = "='StatAnalysis'!$A$5"
ActiveChart.SeriesCollection(3).XValues = "={0,120}"
ActiveChart.SeriesCollection(3).Values = _
    "='StatAnalysis'!cells(5,R),'StatAnalysis'!cells(5,R)"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(4).Name = "='StatAnalysis'!$A$6"
ActiveChart.SeriesCollection(4).XValues = "={0,120}"
ActiveChart.SeriesCollection(4).Values = _
    "='StatAnalysis'!cells(6,R),'StatAnalysis'!cells(6,R)"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(5).Name = "='StatAnalysis'!$A$12"
ActiveChart.SeriesCollection(5).XValues = "={0,120}"
ActiveChart.SeriesCollection(5).Values = _
    "='StatAnalysis'!cells(12,R),'StatAnalysis'!cells(12,R)"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(6).Name = "='StatAnalysis'!$A$13"
ActiveChart.SeriesCollection(6).XValues = "={0,120}"
ActiveChart.SeriesCollection(6).Values = _
    "='StatAnalysis'!cells(13,R),'StatAnalysis'!cells(13,R)"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(7).Name = "='StatAnalysis'!$A$16"
ActiveChart.SeriesCollection(7).XValues = "={0,120}"
ActiveChart.SeriesCollection(7).Values = _
    "='StatAnalysis'!cells(16,R),'StatAnalysis'!cells(16,R)"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(8).Name = "='StatAnalysis'!$A$17"
ActiveChart.SeriesCollection(8).XValues = "={0,120}"
ActiveChart.SeriesCollection(8).Values = _
    "='StatAnalysis'!cells(17,R),'StatAnalysis'!cells(17,R)"
ActiveChart.Location Where:=xlLocationAsNewSheet

R = R + 3
Next

End Sub
它返回应用程序定义或对象定义的错误

有人知道这件事吗?
谢谢。

要设置序列的值,您应该提供常量值数组或Excel范围。首先,我不认为你可以用一对X值来绘制一个Y值,所以你需要在你引用的单元格中创建一个值的副本,比如说单元格+1,这样每个序列有2个点来匹配{0,120}。然后,将代码修改为:

ActiveChart.SeriesCollection(2).XValues = Array(0, 120)
ActiveChart.SeriesCollection(2).Values = _
ActiveSheet.Range(ActiveSheet.Cells(#,R), ActiveSheet.Cells(#+1,R))
希望有帮助