从Access在VBA中创建自定义标准偏差条

时间:2015-08-12 20:57:50

标签: vba excel-vba access-vba stdev errorbar

我尝试使用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,而不是范围内每个点的单个值。不确定为什么或如何解决它。

2 个答案:

答案 0 :(得分:0)

如果已将rngStD声明为范围,则需要向其添加.Value。这将传递范围存储的值而不是范围对象本身。

答案 1 :(得分:0)

您需要传入R1C1表示法中的范围地址,前面带有等号。试试这个语法:

.ErrorBar Direction:=xlY, Include:=xlBoth, _
    Type:=xlCustom, Amount:="=" & rngStD.Address(, , xlR1C1, True), _
    MinusValues:="=" & rngStD.Address(, , xlR1C1, True)