没错。如果我将以下代码中“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)"
最佳答案
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 的信息:
You cannot use the uppercase and lowercase characters "C", "c", "R", or "r" as a defined name, because they are all used as a shorthand for selecting a row or column for the currently selected cell when you enter them in a Name or Go To text box.
关于Excel VBA 运行时错误 1004 仅适用于以 'c' 开头的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16002425/