我试图使用VBA在图表中包含自定义标准偏差条,但我一直在实际添加条的行中获得运行时错误13 "类型不匹配"。我相信它有一个问题与我的范围对象(rngStD),但我不知道为什么。我在Access中使用这个VBA,但我创建了一个Excel应用程序(xlApp),这是现在数据所在的位置,也是创建图形的位置。
'Start of relevant code
xlApp.Sheets("Monday").Select
Set rngAv = Range(Cells(numRows + 2, 3), Cells(numRows + 2, 26))
Set rngStD = Range(Cells(numRows + 3, 3), Cells(numRows + 3, 25))
xlApp.Sheets("Graphs").Select
'Creates graph for average usage with standard deviation at each point
Set oChart = xlApp.Worksheets("Graphs").ChartObjects.Add(600, 10, 500, 250).Chart
oChart.SetSourceData Source:=rngAv 'xlApp.Selection
oChart.Type = xlLine
oChart.HasTitle = True
oChart.ChartTitle.Text = "Average Usage for Mondays"
'At this point the code works and correctly creates the above graph
With oChart.FullSeriesCollection(1)
.HasErrorBars = True
.ErrorBars.Select
'Error is on the next line, I believe it doesn't like the "Amount:=rngStD"
.ErrorBar Direction:=xlY, Include:= _
xlBoth, Type:=xlCustom, Amount:=rngStD.Value
.ErrorBars.Select
End With
编辑:在rngStD的末尾添加。value。最后一行的值。现在数量固定为50,而不是范围内每个点的单独值。
如果rngStD被声明为一个范围,那么你需要给它添加。value。这将传递由范围存储的值,而不是范围对象本身。
您需要以R1C1表示法传递范围的地址,前面加一个等号。试试这个语法:
.ErrorBar Direction:=xlY, Include:=xlBoth, _
Type:=xlCustom, Amount:="=" & rngStD.Address(, , xlR1C1, True), _
MinusValues:="=" & rngStD.Address(, , xlR1C1, True)