【发布时间】:2017-02-20 14:51:35
【问题描述】:
对不起,我认为这是非常基本的,但我想知道是否有人可以告诉我为什么这些 IF 语句中只有 1 个似乎运行。 "CASH" 选项的第 3 个 IF 语句有效,但遗憾的是其他 2 个无效。
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
【问题讨论】:
-
确实如此,但是当您到达第三个时,它会取消其他两个,您的第三个
If不会嵌套在前两个的Else部分中 -
你能显示任何数据吗?
-
如果你在第一行
If的开头放置一个断点 (F9),然后 F8 单步执行调试器中的代码,你会发现Else块前两个If...End If块在前两个条件评估为False时执行。那可能不是你打算写的。事实上,尚不清楚Else块应该在什么条件下运行。Range("Payment_Option")检查需要在Select Case或If...Else If块中,并且您需要弄清楚在哪些情况下需要MnthD_Row、Leasing_Info和OOD_Row隐藏。 -
换句话说,read your code to a rubber duck 比较它实际在做什么和它假定在做什么。
标签: vba excel excel-2013 nested-if