2017-02-20 131 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不客气 –