#excelvba求值函数中的值错误

#excelvba求值函数中的值错误,excel,vba,Excel,Vba,我正试图找出下面的过程有什么问题。在我的工作表中,有一个公式字符串需要对变量x的不同值求值 (0.5*(23-9.81)*3*(x^2))*(x/3)+(0.5*9.81*(x^2))*(x/3)-1*((0.5*18.5*0.33*(2.5^2))*(x+2.5/3)+(18.5*0.33*2.5*x)*(x/2)+(0.5*(23-9.81)*0.33*(x^2))*(x/3)+(0.5*9.81*(x*2)/100*(x*2)/x> 我有一个vba代码,如下所示: Public Funct

我正试图找出下面的过程有什么问题。在我的工作表中,有一个公式字符串需要对变量x的不同值求值

(0.5*(23-9.81)*3*(x^2))*(x/3)+(0.5*9.81*(x^2))*(x/3)-1*((0.5*18.5*0.33*(2.5^2))*(x+2.5/3)+(18.5*0.33*2.5*x)*(x/2)+(0.5*(23-9.81)*0.33*(x^2))*(x/3)+(0.5*9.81*(x*2)/100*(x*2)/x>

我有一个vba代码,如下所示:

Public Function ev(r As Range, x As Double) As Variant
    ev = Application.Evaluate(Replace(r.Value, "x", x))
End Function
奇怪的是,只有当单元格输入是

=电动汽车(Q25,10.01)

但不是

=电动汽车(Q25,10.00000000 1)

甚至

=电动汽车(Q25,10.00001)


为什么会这样?我需要程序使用小增量进行计算,最大增量为
0.000000000 1
。感谢您的见解。

传递给
应用程序的
字符串有255个字符的限制。请评估
。在
用相应的数值替换
ing
x
之后,您将遇到该硬限制

你的选择包括:

  • 将公式分解成若干部分,然后分几个步骤对其进行评估
  • 将公式改写为注释中提到的较短的内容(尽管根据建议参数的长度,您可能仍然超过255个限制)
  • 使用类似的方法,将修改后的公式写入单元格,然后读取计算值

传递给
应用程序的
字符串有255个字符的限制。请评估
。在
用相应的数值替换
ing
x
之后,您将遇到该硬限制

你的选择包括:

  • 将公式分解成若干部分,然后分几个步骤对其进行评估
  • 将公式改写为注释中提到的较短的内容(尽管根据建议参数的长度,您可能仍然超过255个限制)
  • 使用类似的方法,将修改后的公式写入单元格,然后读取计算值

注意:上面的字符串可能是错误的,但我不确定为什么如此打印。我确信公式中没有错误或缺少括号。包含在*字符中的文本被解释为斜体。这就是为什么你的公式看起来很奇怪。如果像这样转义*字符:\*那么它不会创建斜体。为什么不在公式中使用
A1
而不是
x
,只需更改A1中的值?我编辑了问题并添加了代码标记,因此,公式按预期显示。我认为Evaluate只能处理长度不超过255个字符的字符串。注意:上面的字符串可能是错误的,但我不确定为什么如此打印。我确信公式中没有错误或缺少括号。包含在*字符中的文本被解释为斜体。这就是为什么你的公式看起来很奇怪。如果像这样转义*字符:\*那么它不会创建斜体。为什么不在公式中使用
A1
而不是
x
,并简单地更改A1中的值?我编辑了问题并添加了代码标记,因此公式会按预期显示。我认为Evaluate只能处理长度不超过255个字符的字符串。