我在文档中有各种下拉菜单,需要创建一个双条件语句。
所以我正在尝试执行以下操作:
If Cell B14 = Option 1 Then unhide Cells B16:B17
If Cells B17 = Yes Then hide Cells B19:B53
If Cells B17 = No Then show Cells B19:B34
因此,如果有人从下拉菜单中选择Option 1
,则会出现另一个下拉菜单,如果他们从第二个菜单中选择Yes
,则会隐藏所需的单元格,如果他们选择No
则取消隐藏所需的单元格。
第一个下拉菜单中的选项2和3不需要显示第二个下拉框。
除了双如果之外,我让一切都在工作。
当前代码为:
If Target.Address = "$B$14" Then
If Range("B14") = "Option 1: Travel Home" Then
ActiveSheet.Rows("16:35").EntireRow.Hidden = False
ActiveSheet.Rows("36:55").EntireRow.Hidden = True
ElseIf Range("B14") = "Option 2: Travel to next city" Then
ActiveSheet.Rows("15").EntireRow.Hidden = False
ActiveSheet.Rows("16:17").EntireRow.Hidden = True
ActiveSheet.Rows("19:35").EntireRow.Hidden = True
ActiveSheet.Rows("36").EntireRow.Hidden = False
ActiveSheet.Rows("37:55").EntireRow.Hidden = True
ElseIf Range("B14") = "Option 3: Make own arrangements" Then
ActiveSheet.Rows("15:36").EntireRow.Hidden = True
ActiveSheet.Rows("39:55").EntireRow.Hidden = False
End If
End If
选项 2 和 3 工作正常,只是选项 1 无法取消隐藏/隐藏必要的内容,然后还需要执行第二个下拉选项来更改显示的内容。
我测试了下面的代码,它似乎按照您想要的方式运行。我确实对结构进行了一些看似重大的更改,但我这样做是希望它更容易阅读和维护。我认为我的编辑是不言自明的。
我也冒昧地假设这是一个Worksheet_Change
事件,即使你没有明确说明这一点。
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case Is = "$B$14"
Select Case Right(Left(Target.Value, 8), 1)
Case Is = 1 'Option 1
Me.Rows("16:17").EntireRow.Hidden = False
Case Is = 2 'Option 2
Me.Rows("15").EntireRow.Hidden = False
Me.Rows("16:17").EntireRow.Hidden = True
Me.Rows("19:35").EntireRow.Hidden = True
Me.Rows("36").EntireRow.Hidden = False
Me.Rows("37:55").EntireRow.Hidden = True
Case Is = 3 'Option 3
Me.Rows("15:36").EntireRow.Hidden = True
Me.Rows("39:55").EntireRow.Hidden = False
Case Else
Me.Rows("15:55").EntireRow.Hidden = True
End Select
Case Is = "$B$17"
Me.Range("B19:B35").EntireRow.Hidden = Not (Target.Value = "No")
End Select
End Sub
下面是确保在打开工作簿时隐藏所有行的代码。
Private Sub Workbook_Open()
With Me.Worksheets("SheetName") ' change as needed
.Rows("1:3").EntireRow.Hidden = True
.Rows("15:55").EntireRow.Hidden = True
End With
End Sub