3

这是正确的。如果我将以下代码中的“Chart_Series_W_Gain_AAPL”中的“C”更改为任何其他字母,则代码有效。否则,它会在 Series.Formula 分配中引发错误 1004。事实上,如果我使用任何以“c”开头的随机名称,代码就会失败,但否则不会。我试过关闭 Excel 并重新打开,但同样的问题。我遇到了这个问题,因为我一直以图表名称开头命名我的图表系列定义的名称,但后来我认为这很令人困惑,我试图在用作图表系列的定义名称前面加上“Chart_Series_”。人们会认为,这是非常良性的变化。

    Dim objChartWGain As Chart
    Dim objSeries As Series

    Set objChartWGain = Charts("W Gain")
    Set objSeries = objChartWGain.SeriesCollection.NewSeries

    ActiveWorkbook.Names.Add "Chart_Series_W_Gain_AAPL", "=W_Gain_Data_Array(W_Gain_Data_Alloc,1,W_Gain_Data_GainLossCurr)"

    objSeries.Formula = "=SERIES(""AAPL"",,'ThomTrade-charts.xlsb'!Chart_Series_W_Gain_AAPL,1)"
4

1 回答 1

4

MSDN 指出您不能使用字母“C”或“R”(大写/小写)作为名称。我认为当这个字母是名称中的第一个字母是 R 或 C(或 r 或 c)时存在一个错误,我已经复制了您的错误。

尝试在连接到您的公式的字符串中使用名称的地址,如下所示:

Sub ChtSeries()
Dim objChartWGain As Chart
Dim objSeries As Series
Dim nmAddress As String
Dim n As Name

Set objChartWGain = Charts("W Gain")

'Replace with your Name definition:'
Set n = ActiveWorkbook.Names.Add("Chart_Series_W_Gain_AAPL", Sheets("Sheet2").Range("A2:A4"))

'Turn the Name's address in to a usable string:'
nmAddress = Replace(n.RefersTo, "=", vbNullString)

Set objSeries = objChartWGain.SeriesCollection(1)
objSeries.Formula = "=SERIES(""AAPL"",," & nmAddress & ",1)"

End Sub

来自 MSDN 的信息在这里:

http://office.microsoft.com/en-us/excel-help/define-and-use-names-in-formulas-HA102749565.aspx#_Learn_about_syntax

您不能使用大写和小写字符“C”、“c”、“R”或“r”作为定义的名称,因为它们都用作为当前选定的单元格选择行或列的简写,当您在名称或转到文本框中输入它们。

于 2013-04-14T21:19:10.277 回答