楼主:
yimean (温柔杀手)
2020-07-07 10:49:36软件:Excel
版本:Office 365
各位版上的神人早上好。
我撰写了一个简单的用料计算程式。
执行的时候会卡在
PrPS = Round(1220 * 2440 * MP * Density * Thick / 10 ^ 6, 2)
错误资讯是"溢位"
我有尝试把变量宣告为Variant或着甚至不宣告都出现这个问题
在储存格中打公式不会有问题,但是在VBA中就会有。
在这应用情境中
MP=170, Density=2.7, Thick=2, length=133.5, width=133.5, buffer=2
烦请高手协助,感恩。
作者: soyoso (我是耀宗) 2020-07-07 11:09:00
如无合适方式的话,可改为1 / 10 ^ 6 * 1220 * 2440 * MP* Density * Thick或是 MP * Density * Thick * 1220 * 2440 / 10 ^ 6若要以原本1220 * 2440 * MP..的话,1220改为csng(1220)
楼主:
yimean (温柔杀手)
2020-07-07 14:46:00@s大Csng(1220)的解决方法是可行的,感谢。可是,为什么只有包一个1220就可以呢?烦请拨冗解惑,感谢。
作者: soyoso (我是耀宗) 2020-07-07 14:59:00
出现溢位的错误视窗,按说明有写转型为整数integer所以溢位当然以clng也是可以,目的就是不要被转型
楼主:
yimean (温柔杀手)
2020-07-07 15:38:00@s大,我看了说明,说明也是只包一个,我的疑问是,为什么不是包整个算式。这跟内建函数的概念不太依样呢。
作者: soyoso (我是耀宗) 2020-07-07 16:03:00
说明网页内搜寻运算子,*运算子注解有写result 的资料类型通常是运算式的相同的最精确运算式。 精确的顺序,从最低到最精确,是Byte、integer(整数)、 Long、Single、Currency、Double....1220*2440都是做为整数integer来运算,套到上述注解来看相同最精确就会是以integer,那就溢位了,那改以1220*MP来看,变量MP是single,最精确是single,所以不会溢位,这就是为什么只要改一个就好,要clng、csng加在1220或2440都可以
楼主:
yimean (温柔杀手)
2020-07-08 11:20:00@s原来如此,感恩您。