首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel VBA -在VBA中计算

Excel VBA -在VBA中计算
EN

Stack Overflow用户
提问于 2017-02-26 13:20:49
回答 3查看 196关注 0票数 0

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

喜欢

代码语言:javascript
复制
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中评估它并返回结果。我没有得到评估去为计算工作。

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

有简单容易的方法吗?

谢谢,我希望这不是复制品。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-26 14:59:46

您应该用小数点替换十进制逗号。

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2017-02-26 13:30:25

不应存在任何问题:

代码语言:javascript
复制
Sub eval()
    MsgBox Evaluate((100 * 20) / 30 * 500)
End Sub

它与等效的单元格公式匹配。注意,这是,而不是,与以下内容相同:

代码语言:javascript
复制
   (100*20)/(30*500)

EDIT#1:

这也适用于:

代码语言:javascript
复制
Sub eval2()
    Dim s As String
    s = "((100 * 20) / 30 * 500)"
    MsgBox Evaluate(s)
End Sub
票数 1
EN

Stack Overflow用户

发布于 2017-02-26 13:29:52

使用下面的潜艇。

代码语言:javascript
复制
Sub Calculate()
Dim x As Double
    x = ((100 * 20) / 30 * 500)
    Range("A1") = x
    MsgBox x
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42469022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档