2016-08-16 103 views
1

我記錄在Excel中該宏的一部分:介紹變量在記錄VBA宏

Cells(x, i).Select 
     Selection.FormulaArray = _ 
     "=SQRT((MMULT(MMULT(TRANSPOSE(R2C14:R9C14),'Monthly Covariance y1'!R[12]C[0]:R[19]C[7]),'Portfolio Vola per Month'!R2C14:R9C14)))" 

在中間術語「 '每月協方差Y1' R [12] C []:R [19 ] [C] [])「我想將粗體數字表示爲變量。 應該是j和應該是j + 7

當我嘗試用變量替換硬編號時,Excel返回「無法設置Range類的FormulaArray屬性」。

有關如何解決此問題的任何想法?

非常感謝。

回答

3

只需關閉配方,添加變量,並再次打開:

"=SQRT((MMULT(MMULT(TRANSPOSE(R2C14:R9C14),'Monthly Covariance y1'!R[12]C["& j & "]:R[19]C["& j + 7 & "]),'Portfolio Vola per Month'!R2C14:R9C14)))"

通過「關閉式」,我的意思是密切與",然後用&連接變量,然後「重新打開「與"。簡單的例子,用j是行號,說5

myRange.FormulaR1C1 = "=Sum(A" & j & ":A" & j & ")"

相當於

myRange.FormulaR1C1 = "=Sum(A5:A5)"

此外,這是另一個問題完全,但儘量avoid using .Select

+1

我曾經在下面的帖子中做過「關閉公式」的視覺表示(正如布魯斯所說的那樣):http://stackoverflow.com/questions/38040259/expected -end-of-statement-error-while-i-am-trying-to-sum-values-of-ay動態/ 38040342#38040342希望能幫助理解。 – Ralph

+0

@Ralph - 哦,真好!我將不得不爲未來保留這個URL,歡呼! – BruceWayne