2017-02-20 128 views
1

對不起,我認爲這是非常基本的,但我想知道是否有人可以告訴我爲什麼只有這些IF陳述似乎運行。第IF「CASH」選項的聲明工作,但其他2不幸的是沒有。多個VBA if語句觸發不同的事件

Sub HideUnhide_Discount() 

If Range("Payment_Option") = "Subscription" Then 
    Range("MnthD_Row").EntireRow.Hidden = False 
    Range("MnthD").Value = 0 
Else 
    Range("MnthD_Row").EntireRow.Hidden = True 
End If 

If Range("Payment_Option") = "Lease" Then 
    Range("OOD_Row").EntireRow.Hidden = False 
    Range("Leasing_Info").EntireRow.Hidden = False 
    Range("OOD").Value = 0 
Else 
    Range("OOD_Row").EntireRow.Hidden = True 
    Range("Leasing_Info").EntireRow.Hidden = True 
End If 

If Range("Payment_Option") = "Cash" Then 
    Range("OOD_Row").EntireRow.Hidden = False 
    Range("MnthD_Row").EntireRow.Hidden = False 
    Range("OOD").Value = 0 
Else 
    Range("OOD_Row").EntireRow.Hidden = True 
    Range("MnthD_Row").EntireRow.Hidden = True 
End If 

End Sub 
+0

他們這樣做,但是當你到達一個第三它cancells其他兩個,第三個'If'不嵌套在前兩個 –

+0

的「Else」部分中,可以顯示任何數據嗎? –

+0

如果您在第一個「If」行開始處放置一個斷點(F9),然後再通過調試器中的代碼執行F8步驟,您會發現前兩個「If」的「Else」塊.End If' blocks當前兩個條件評估爲「False」時執行。這可能不是你想要寫的。事實上,「Else」塊應該在哪種情況下運行並不清楚; 'Range(「Payment_Option」)'檢查需要在'Select Case'或'If ... Else If'塊中,並且您需要計算出哪些情況需要'MnthD_Row','Leasing_Info'和' OOD_Row'隱藏。 –

回答

4

嘗試用下面的Select Case免去您多次If >>Else條件:

Sub HideUnhide_Discount() 

' first reset all rows to be visible , later according to the value, unhide specific rows 
Range("MnthD_Row").EntireRow.Hidden = True 
Range("OOD_Row").EntireRow.Hidden = True 
Range("Leasing_Info").EntireRow.Hidden = True 

Select Case Range("Payment_Option") 
    Case "Subscription" 
     Range("MnthD_Row").EntireRow.Hidden = False 
     Range("MnthD").Value = 0 

    Case "Lease" 
     Range("OOD_Row").EntireRow.Hidden = False 
     Range("Leasing_Info").EntireRow.Hidden = False 
     Range("OOD").Value = 0 

    Case "Cash" 
     Range("OOD_Row").EntireRow.Hidden = False 
     Range("MnthD_Row").EntireRow.Hidden = False 
     Range("OOD").Value = 0 

End Select 

End Sub 
+0

這是偉大的......正是我所需要的。謝謝 –

+0

@PeterMogford不客氣 –