作者mindscold (********)
看板Visual_Basic
标题[VBA ] IIF指令的溢位
时间Thu Apr 23 09:41:42 2009
请问一下以下做同一件事的2种程式写法:
(一)
sht2.Cells(5, i + 1) = IIf(sht2.Cells(4, i + 1) = 0, "0", sht1.Cells(5, i + 1)
/ sht2.Cells(4, i + 1))
(二)
If sht2.Cells(4, i + 1) = 0 Then
sht2.Cells(5, i + 1) = 0
Else
sht2.Cells(5, i + 1) = sht1.Cells(5, i + 1) / sht2.Cells(4, i + 1)
End If
====我是分隔线=====
请问一下这2行明明都是去判断sht2.cells(4,i+1)这个栏位是否为0,一但为0则直接指
定sht2.cells(5,i+1)为0,否则计算sht1.cells(5,i+1) / sht2.cells(4,i+1)後传入。
但是一但sht2.cells(4,i+1) = 0且sht1.cells(5,i+1)为空白时,方法(一)即马上出现
溢位的错误,而方法(二)却能正确执行。
为什麽会这样呢?谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.248.17.41
1F:推 ClubT:第一个方法的IF多一个I 04/23 12:05
2F:→ MOONRAKER:nice answer XD 04/23 15:07
3F:推 ClubT:原来是真的有IIF这个function...囧 04/23 16:24
4F:→ ClubT:我想你用方法一 程式还是要算出每个参数的值 04/23 16:25
5F:→ ClubT:所以并不是不等於0就不会执行到第三个参数 04/23 16:26
6F:推 MOONRAKER:对,iif既为函数,那麽每个参数都要在传进函数前先算完 04/23 16:57
7F:→ MOONRAKER:而这一算之下,会错的当然就先signal error了 04/23 16:57