为什么在EXCEL VBA中使用while语句时,条件成立却未进行循环

我有一个可以通过参数p和参数T来计算参数s的函数s_pT,但是我现在需要通过s和T来求解p,所以p_Ts是我要建立的函数,有对应的输入T和s,我的想法是通过不断的迭代,使p的值能够达到符合误差要求的程度,从语句上我不太清楚什么地方有问题,是判断语句里不能再调用函数还是怎么说,反正在使用时,得出的结果就是p_Ts等于1,也就是我设定的中间变量p没有进行循环,有没有清楚是怎么回事的朋友帮个忙

你应该用 do until ... loop
按你这样,一上来就不符合了,当然不循环
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-09
p是临时变量,一旦出了函数范围,p就不起作用了。因此,p应该设为全局变量。在文件中加上一个model,然后用public p as double来解决。另外,不知道您的版本,一般WHILE应该和loop或者until用。追问

我这里的p就是拿来做临时变量啊,应该不是这个问题,我设定了一个p#,当误差>0.0001时候假如p大了就减小一半,假如小了就增加一半,直到实现误差要求,最后令输出函数值p_Ts=p,从逻辑上是没问题的,因为我在matlab上实现了,但是vb我不太熟,不知道是调用时候出问题还是什么地方出问题,总之在输出结果时候,p没有经过循环,因为最后显示p_Ts=1

追答

p#是单独变量,根本没有参与任何工作中。在调用函数s_pt时,是否有改变p的计算式?另外相对误差abs取绝对值的括号应在/s外。

追问

p的计算式没有修改,相对误差abs的括号范围应该不影响

相似回答