在一张纸的单元格(1,1)中,我有以下公式: 5 * a ^ 2 + 3 * a ^ 1 +1 * a + 5
在同一张纸的Cell(2,1)中,我有另一个公式: 3 * b ^ 2 + 5 * b ^ 1 +1 * b + 3
我想计算这些公式的值并将其分配给VBA中的变量。例如,我一直在尝试这样的事情
Function calculate_y(a,b)
answer1 = [A1]
answer2 = [A2]
calculate_y = answer1 + answer2
End Function
但是我一直在出错。我试过玩Evaluate()和类似&的字符,但无济于事。我之所以不直接将公式输入vba是因为这些公式会发生变化。我不想手动更新公式。
答案 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
如果您不打算将其用作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