我尝试使用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末尾添加了.Value。现在,金额固定为50,而不是范围内每个点的单个值。不确定为什么或如何解决它。
答案 0 :(得分:0)
如果已将rngStD声明为范围,则需要向其添加.Value。这将传递范围存储的值而不是范围对象本身。
答案 1 :(得分:0)
您需要传入R1C1表示法中的范围地址,前面带有等号。试试这个语法:
.ErrorBar Direction:=xlY, Include:=xlBoth, _
Type:=xlCustom, Amount:="=" & rngStD.Address(, , xlR1C1, True), _
MinusValues:="=" & rngStD.Address(, , xlR1C1, True)