Excel VBA - 在 VBA 中计算

Excel VBA - Calculate in VBA

简单的问题。我有一个代表公式的字符串。

喜欢

Dim formula As String
formula = Replace(processFormula(2016, 9000, constants, formulaRow), "##", 9000)
'formula has the value "(1007,27*((9000 - 8820)/10000)+1400)*((9000 - 8820)/10000)"

MsgBox (formula)

'Evaluate(formula) not working sadly

现在我想在 VBA 和 return 结果中计算它。我没有使用 Evaluate 进行计算。

processFormula 是一个生成公式的函数,它 return 是一个字符串。因此,将字符串放入替换函数中,用数字替换“##”。这里没有什么神奇的。关于调试器公式是一个具有上述值的字符串(它直接从调试器复制)。

有没有简单易行的方法?

谢谢,我希望它不是重复的。

使用下面的子

Sub Calculate()
Dim x As Double
    x = ((100 * 20) / 30 * 500)
    Range("A1") = x
    MsgBox x
End Sub

应该没有问题:

Sub eval()
    MsgBox Evaluate((100 * 20) / 30 * 500)
End Sub

匹配等效的单元格公式。请注意,这 不同:

   (100*20)/(30*500)

编辑#1:

这也有效:

Sub eval2()
    Dim s As String
    s = "((100 * 20) / 30 * 500)"
    MsgBox Evaluate(s)
End Sub

你应该用小数点代替小数逗号

Dim formula As String
formula = replace(Replace(processFormula(2016, 9000, constants, formulaRow), "##", 9000),",",".")
'formula has the value "(1007,27*((9000 - 8820)/10000)+1400)*((9000 - 8820)/10000)"

MsgBox (formula)

Evaluate(formula) 'should work now ;o)