VBA - 绕过 Application.evaulate 限制

VBA - Bypass Application.evaulate limit

所以我得到了一个字符串,其中包含我想要计算为总和的数值。我尝试使用 Application.evaluate 但我注意到我可以在计算中使用的字符数量有限制。有没有办法绕过这个或修复它以便我可以计算它?我正在考虑自己编写 "calculator",但感觉有点太多了,一定有更简单的方法吗?

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

鉴于加法是可交换的,你能不能不计算表达式的一半(最多 3158785/(2^16)),将结果赋给一个变量,然后计算表达式的其余部分并将其添加到前一个结果?

你能把它贴在一个单元格里然后读回来吗?

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