Vba 函数计算

Vba 函数计算,vba,function,types,Vba,Function,Types,底层是我正在编写的更大代码的一部分。我在这个示例函数中简化了这个问题。“Formuletekst”可以更改,即“*”或“/”或其他内容。我如何编写函数,以使计算值(10)用于测试,而不是此示例函数中给出的输出“500/50”?非常感谢 阿米尔 您可以设置一个IF条件: Function TT(FormuleTekst) teg = Formuletekst IF teg = "/" Then TT = 500/50 Else TT = 500*5 End Function 对于MS Excel

底层是我正在编写的更大代码的一部分。我在这个示例函数中简化了这个问题。“Formuletekst”可以更改,即“*”或“/”或其他内容。我如何编写函数,以使计算值(10)用于测试,而不是此示例函数中给出的输出“500/50”?非常感谢

阿米尔


您可以设置一个IF条件:

Function TT(FormuleTekst)
teg = Formuletekst
IF teg = "/" Then
TT = 500/50
Else
TT = 500*5
End Function
对于MS Excel,您可以使用空单元格(例如A15)来输入公式,并可以将其返回给TT。类似如下:

Function TT(FormuleTekst)
teg = FormuleTekst
TT = "=" & 500 & teg & 50
ActiveSheet.Range("A15").Value = TT
TT = ActiveSheet.Range("A15").Value
End Function

您可以设置一个IF条件:

Function TT(FormuleTekst)
teg = Formuletekst
IF teg = "/" Then
TT = 500/50
Else
TT = 500*5
End Function
对于MS Excel,您可以使用空单元格(例如A15)来输入公式,并可以将其返回给TT。类似如下:

Function TT(FormuleTekst)
teg = FormuleTekst
TT = "=" & 500 & teg & 50
ActiveSheet.Range("A15").Value = TT
TT = ActiveSheet.Range("A15").Value
End Function

我建议使用
应用程序。Evaluate
方法,以确保捕获可能是表达式的每个字符串:

tt = "500/50"
aa = Application.Evaluate(tt)
aa将等于10,这将发生在您可能传递到函数中的每种Excel操作中

该方法是管理此类输入的最佳方法,这些输入是“字符串”,但同时也是“人类可读的操作”

其他示例向您展示了一个更复杂的输入,该输入不会由您提出的其他替代方案管理:

tt = "500/50 + 10/20 - 4"
aa = Application.Evaluate(tt)
这个输入将返回
aa=6.5
,但我相信解析字符串和执行操作的时间要长得多(而且如果内置的已经存在,也不会更安全)

所以,我的建议就是写

TT = Application.Evaluate("500" & teg & "50")

我建议使用
应用程序。Evaluate
方法,以确保捕获可能是表达式的每个字符串:

tt = "500/50"
aa = Application.Evaluate(tt)
aa将等于10,这将发生在您可能传递到函数中的每种Excel操作中

该方法是管理此类输入的最佳方法,这些输入是“字符串”,但同时也是“人类可读的操作”

其他示例向您展示了一个更复杂的输入,该输入不会由您提出的其他替代方案管理:

tt = "500/50 + 10/20 - 4"
aa = Application.Evaluate(tt)
这个输入将返回
aa=6.5
,但我相信解析字符串和执行操作的时间要长得多(而且如果内置的已经存在,也不会更安全)

所以,我的建议就是写

TT = Application.Evaluate("500" & teg & "50")

是的,但是比“*”和“/”有更多的可能性。我简化了问题中的问题。你在MS Excel中使用这个吗?是的,在Excel中。这是一个更大代码中的函数。TT计算是不固定的。是的,但是比“*”和“*”有更多的可能性/“。我简化了问题中的问题。你在MS Excel中使用这个吗?在Excel中使用。这是一个更大代码中的函数。如果TT计算不固定。