2014-08-27 35 views
0

我已經看到了這個問題了幾次,但都沒有找到一個解決方案,適用於我的情況的字符串值,所以這裏有雲:錯誤1004當試圖單元格的值設置爲

我有一個相當複雜的公式,我想插入一個單元格(複雜,因爲它是一個痛苦的追屁股)。我在變量中設置了組件,並且在本地窗口中運行子程序給了我正確的最終變量名稱,但是當我嘗試將單元格設置爲公式時,我得到'1004:應用程序定義或對象定義的錯誤' 。輸出應該是這樣的:

細胞A1:= BDS( 「0」, 「pg_segment」, 「DIR = H」, 「期數= -3」)

然而它沒有返回。

我試過以下內容:將最終變量(cmdstr0)設置爲一個整數 - 這有效。作爲一個字符串(「asdf」)也適用。直接更改值(.value =「string」)的作用。唯一不起作用的是VBA構建公式本身以插入到字符串中。下面的代碼,並感謝您:

sub populate_revenues() 

'field = bloomberg field to look up 
'direction = output direction (horizontal/vertical) 
'geoverride = override to display only geo or product segments 
'periods = numbe of periods to display 
'cmdstr = the string to be output that will download the data 


Dim field As String 
Dim direction As String 
Dim geoverride As String 
Dim periods As String 
Dim cmdstr3 As String 
Dim cmdstr2 As String 
Dim cmdstr1 As String 
Dim cmdstr0 As Variant 

Let cmdstr2 = 0 

Let field = Worksheets("output").Cells(1, 3).Value 
Let direction = "Dir = " & Worksheets("output").Cells(1, 5).Value 
Let geoverride = " product_geo_override = " & Worksheets("output").Cells(1, 7).Value 
Let periods = " number_of_periods = " & Worksheets("output").Cells(2, 3).Value 
Let cmdstr1 = "=BDS(" & Chr(34) 
Let cmdstr3 = Chr(34) & "," & Chr(34) & field & ", " & Chr(34) _ 
& direction & Chr(34) & ", " & Chr(34) & geoverride & Chr(34) & ", " & Chr(34) & periods &  Chr(34) & ")" 


Let cmdstr0 = cmdstr1 & cmdstr2 & cmdstr3 
'Let cmdstr0 = 1 

Let Worksheets("Sheet2").Cells(10, 1).Value = cmdstr0 

End Sub 

而且,任何人都可以請告訴我,如果有作爲代碼要比打空格鍵每一行四次來格式化一個更快的方法?

回答

1

如您所知,您必須在雙引號中加倍。所以,如果你想:

=COUNTIF(A1:A10,"apples") 

必須使用:

Sub demo() 
    Range("B9").Formula = "=COUNTIF(A1:A10,""apples"")" 
End Sub 

我個人而言,有很多與這個麻煩。我要做的調試是將一個單引號在公式的開始:

Sub demo() 
    Range("B9").Formula = "'=COUNTIF(A1:A10,""apples"")" 
End Sub 

這讓我「看」式的文字和解決問題。

B.T.W

要創建一個代碼塊,喜光用的代碼,並使用成對的大括號{}

+0

謝謝!我完全忘記了雙引號的事情。還有一個問題:爲什麼Chr(34)(「)不工作? – smpat04 2014-08-27 16:53:02

+1

我希望我能給你一個很好的答案。我發現嵌入雙引號的整個業務非常令人沮喪。 – 2014-08-27 16:55:09

+1

@ smpat04可能語法錯誤在您的結尾。我沒有測試過你的代碼,但我注意到這樣簡單的事情將使用Chr(34):'ActiveCell.Value「=」&Chr(34)&「hello」&Chr(34)' – 2014-08-27 17:12:33

相關問題