[VBA ] IIF指令的溢位

看板Visual_Basic作者 (********)時間17年前 (2009/04/23 09:41), 編輯推噓3(304)
留言7則, 2人參與, 最新討論串1/3 (看更多)
請問一下以下做同一件事的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

04/23 12:05, , 1F
第一個方法的IF多一個I
04/23 12:05, 1F

04/23 15:07, , 2F
nice answer XD
04/23 15:07, 2F

04/23 16:24, , 3F
原來是真的有IIF這個function...囧
04/23 16:24, 3F

04/23 16:25, , 4F
我想你用方法一 程式還是要算出每個參數的值
04/23 16:25, 4F

04/23 16:26, , 5F
所以並不是不等於0就不會執行到第三個參數
04/23 16:26, 5F

04/23 16:57, , 6F
對,iif既為函數,那麼每個參數都要在傳進函數前先算完
04/23 16:57, 6F

04/23 16:57, , 7F
而這一算之下,會錯的當然就先signal error了
04/23 16:57, 7F
文章代碼(AID): #19xyTNY6 (Visual_Basic)
討論串 (同標題文章)
文章代碼(AID): #19xyTNY6 (Visual_Basic)