在录制的VBA宏中引入变量

时间:2016-08-16 16:22:29

标签: excel vba excel-vba

我在Excel中记录了这个宏的一部分:

    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 [ 0 ]:R [19] C [ 7 ])"我想把粗体数字表示为变量。 0 j 7 j + 7

当我尝试用变量替换硬编号时,Excel返回"无法设置Range类的#Formula的FormulaArray属性。

关于如何解决这个问题的任何想法?

非常感谢。

1 个答案:

答案 0 :(得分: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