Excel VBA-将变量分配给位于某些单元格范围内的用户定义的公式

时间:2018-08-16 20:26:20

标签: excel vba excel-vba

在一张纸的单元格(1,1)中,我有以下公式: 5 * a ^ 2 + 3 * a ^ 1 +1 * a + 5

在同一张纸的Cell(2,1)中,我有另一个公式: 3 * b ^ 2 + 5 * b ^ 1 +1 * b + 3

Screenshot of the formulas

我想计算这些公式的值并将其分配给VBA中的变量。例如,我一直在尝试这样的事情

Function calculate_y(a,b)

answer1 = [A1]
answer2 = [A2]

calculate_y = answer1 + answer2 

End Function  

但是我一直在出错。我试过玩Evaluate()和类似&的字符,但无济于事。我之所以不直接将公式输入vba是因为这些公式会发生变化。我不想手动更新公式。

1 个答案:

答案 0 :(得分:3)

在使用提供的值替换字符串中的变量时使用评估:

Function calculate_y(a, b)

With Application.Caller.Parent
    answer1 = .Evaluate(Replace(.Range("A1"), "a", a))
    answer2 = .Evaluate(Replace(.Range("A2"), "b", b))
End With

calculate_y = answer1 + answer2

End Function

enter image description here


如果您不打算将其用作UDF而是从vba调用,则还应传递公式所在的工作表:

Function calculate_y(ws As Worksheet, a As Double, b As Double)

With ws
    answer1 = .Evaluate(Replace(.Range("A1"), "a", a))
    answer2 = .Evaluate(Replace(.Range("A2"), "b", b))
End With

calculate_y = answer1 + answer2

End Function
相关问题