Excel VBA 运行时错误 1004 仅适用于以 'c' 开头的名称

标签 excel excel-2010 vba

没错。如果我将以下代码中“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 的信息:

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

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/

相关文章:

xml - 将数据从 excel 导出到 XML 模式在嵌套列表中有嵌套列表

json - 在需要对象交互的站点上使用 XML HTTP 请求

vba - 根据两个条件对多个表进行排序的宏

excel - 如何比较列中的值?

excel - 如果 EnableCancelKey 未禁用,为什么 VBA 会停止

excel - 自动展开所有具有特定名称的 "Table Columns"

excel - 如何在Excel中创建下拉列表?

vba - 如果有数字继续替换 "and ',然后清理其余部分

arrays - 使用 VBA 使用 Excel 表列中的值填充一维数组

vba - 在 Excel 中按单元格值获取列号