看板 Visual_Basic 關於我們 聯絡資訊
請問一下以下做同一件事的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