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)
简单的问题。我有一个代表公式的字符串。
喜欢
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)