Vba excel 4.0宏评估

Vba excel 4.0宏评估,vba,excel,excel-formula,Vba,Excel,Excel Formula,我试图在Excel中计算一个方程式,其中的运算由单元格的值决定。例如,假设我在A2中有一个等式,表示100(操作)100。我希望该单元格的计算结果是,如果A1=1,那么100*100,如果2,那么100/100,如果3,那么100+100,如果4,那么100-100。我能够想出一个解决方案,使用VLOOKUP来确定操作,连接以将数字与操作结合起来,并使用Excel 4.0宏函数在命名范围内求值,以将文本字符串作为数字求值 现在,我想在VBA中做同样的事情(我仍然有操作查找图表,例如Excel工作

我试图在Excel中计算一个方程式,其中的运算由单元格的值决定。例如,假设我在
A2
中有一个等式,表示
100(操作)100
。我希望该单元格的计算结果是,如果A1=1,那么100*100,如果2,那么100/100,如果3,那么100+100,如果4,那么100-100。我能够想出一个解决方案,使用
VLOOKUP
来确定操作,连接以将数字与操作结合起来,并使用Excel 4.0宏函数在命名范围内求值,以将文本字符串作为数字求值

现在,我想在VBA中做同样的事情(我仍然有操作查找图表,例如Excel工作表中的
1=*
2=/
,等等)。如果没有if/then/else语句,有什么方法可以做到这一点吗

Function Eval(eq, op)
    Eval = Application.Evaluate("=" & Replace(eq, "(operation)", Mid("*/+-", op, 1)))
End Function

如果方程式包含单元格引用,请确保使用
工作表。评估
表格,范围为正确的工作表…

另一种方法,使用选择案例:

Function Calc(eq As Integer, op As Double) As Double
    Select Case eq
        Case 1: Calc = op * op
        Case 2: Calc = op / op
        Case 3: Calc = op + op
        Case 4: Calc = op - op
        Case Else: Calc = 0
    End Select
End Function

可以使用
worksheets()。evaluate(“String”)
您可以将操作数加载到数组中,并使用A1中的值引用数组。您也可以在命名公式中使用evaluate并绕过VBA…但您的工作簿需要另存为XLSM,因为evaluate是一个旧的VBA内置函数…或类似的函数。