VBA-绕过应用程序。评估限制

时间:2018-07-20 15:40:15

标签: vba calculation

因此,我得到了一个字符串,其中包含要计算为总和的数值。我尝试使用Application.evaluate,但我注意到在计算中可以使用的字符数有限制。有没有办法绕过或修复它,以便我可以计算出来?我正在考虑编写自己的“计算器”,但感觉有点太多了,必须有一种更简单的方法来做到这一点?

  

0 /(2 ^ 16)+ 3 /(2 ^ 16)+ 53 /(2 ^ 16)+ 139573 /(2 ^ 16)+ 1844259   /(2 ^ 16)+ 4005892 /(2 ^ 16)+ 7546905 /(2 ^ 16)+ 14629148 /(2 ^ 16)+   15078164 /(2 ^ 16)+ 7477520 /(2 ^ 16)+ 3158785 /(2 ^ 16)+ 1258795 /(2 ^ 16)   + 538914 /(2 ^ 16)+ 396079 /(2 ^ 16)+ 12305 /(2 ^ 16)+ 1555 /(2 ^ 16)+ 258 /(2 ^ 16)+ 8 /(2 ^ 16)+ 4 /(2 ^ 16)

另一个例子:

  

1215 /(7168 + 5922 + 5390 + 7034 + 10410 + 10494 +   12113 + 6607 + 448 + 67 + 2996 + 4103 + 15581 + 18432 +   7299 + 1215 + 177 + 11 + 3 + 0)* 100

2 个答案:

答案 0 :(得分:1)

您可以将其粘贴在单元格中并读回吗?

Sub test()

    Dim s As String

    s = "0 /(2^16) + 3 /(2^16) + 53 /(2^16) + 139573 /(2^16) + 1844259 /(2^16) + 4005892 /(2^16) + 7546905 /(2^16) + 14629148 /(2^16) + 15078164 /(2^16) + 7477520 /(2^16) + 3158785/(2^16) + 1258795/(2^16) + 538914/(2^16) + 396079/(2^16) + 12305/(2^16) + 1555/(2^16) + 258/(2^16) + 8/(2^16) + 4/(2^16)"

    Sheet1.Range("A1").Formula = "=" & s

    Debug.Print Sheet1.Range("A1").Value

    Sheet1.Range("A1").ClearContents

End Sub

答案 1 :(得分:0)

鉴于加法是可交换的,是否可以不计算一半的表达式(最大3158785 /(2 ^ 16)),将结果分配给变量,然后计算表达式的其余部分并将其添加到先前的结果中?