作者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
推 ClubT:第一個方法的IF多一個I 04/23 12:05
→ MOONRAKER:nice answer XD 04/23 15:07
推 ClubT:原來是真的有IIF這個function...囧 04/23 16:24
→ ClubT:我想你用方法一 程式還是要算出每個參數的值 04/23 16:25
→ ClubT:所以並不是不等於0就不會執行到第三個參數 04/23 16:26
推 MOONRAKER:對,iif既為函數,那麼每個參數都要在傳進函數前先算完 04/23 16:57
→ MOONRAKER:而這一算之下,會錯的當然就先signal error了 04/23 16:57