0

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

4

2 回答 2

0

如果 rngStD 已被声明为一个范围,那么您需要将 .Value 添加到它。这将传递范围存储的值,而不是范围对象本身。

于 2015-08-12T21:24:24.447 回答
0

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

.ErrorBar Direction:=xlY, Include:=xlBoth, _
    Type:=xlCustom, Amount:="=" & rngStD.Address(, , xlR1C1, True), _
    MinusValues:="=" & rngStD.Address(, , xlR1C1, True)
于 2015-08-20T14:51:26.143 回答