2013-04-14 64 views
3

沒錯。如果我將以下代碼中的「Chart_Series_W_Gain_AAPL」中的'C'更改爲代碼工作的任何其他字母。否則它會在Series.Formula分配中引發錯誤1004。事實上,如果我使用任何以'c'開頭的隨機名稱,代碼將失敗,否則不會。我試過關閉Excel並重新打開,但同樣的問題。我遇到過這種情況,因爲我一直以圖表名稱命名圖表系列定義的名稱,但後來我認爲這很混亂,我嘗試在「Chart_Series_」中用作圖表系列的定義名稱。人們會想,非常溫和的變化。Excel VBA運行時錯誤1004僅以名稱以'c'開頭

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)" 
+0

您是否嘗試過添加2組額外的引號? – KLDavenport

+0

@KevinD,你的意思是圍繞着定義的名字嗎? – ThomasMcLeod

+0

是的,像這樣:'「」Chart_Series_W_Gain_AAPL「」'甚至是'「」「」Chart_Series_W_Gain_AAPL「」「'' – KLDavenport

回答

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」作爲定義的名稱,因爲它們全部用作 的簡寫選擇行或公司當您將 輸入到「名稱」或「轉到」文本框中時,將爲當前所選單元格設置爲lumn。

+0

有趣。什麼版本的Excel是y ou使用,因爲我得到一個語法錯誤,如果我嘗試'設置'Name'對象從一個調用'Names.Add' – ThomasMcLeod

+1

我可以通過UI手動設置以'c'開頭的名稱的系列公式它與工作簿名稱。另外,工作簿名稱必須在單引號內,無論名稱中是否有空格。因此''ThomTrade-charts.xlsb'!Chart_Series_W_Gain_AAPL'通過UI工作,但不是以編程方式。 – ThomasMcLeod

+0

我看到你想要在這裏做什麼。你只是從圖片中刪除已定義的名字。這是行不通的,因爲如果你看看我的發佈代碼,我不想引用範圍。我使用的名稱實際上是一個具有特定參數的函數調用。 Series.Formula屬性不直接接受函數調用,只接受名稱。 – ThomasMcLeod