我的问题是我的代码没有选择“中”变量
If Range("B24").Value = "Medium" Then
Sheets("Sheet2").Visible = True
你可以告诉它有什么问题(“标准”应该发现行,“中”应该隐藏它们但是取消隐藏Sheet2,High再次保持行隐藏但是取消隐藏Sheet2,如果(B24)为空它应该保持行和Sheet2隐藏:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B24").Value = "Standard" Then
Sheets("Sheet2").Visible = False
End If
If Range("B24").Value = "Medium" Then
Sheets("Sheet2").Visible = True
End If
If Range("B24").Value = "High" Then
Sheets("Sheet2").Visible = True
End If
Else
Sheets("Sheet2").Visible = False
End If
If Range("B24").Value = "Standard" Then
Rows("29:47").EntireRow.Hidden = False
Else
Rows("29:47").EntireRow.Hidden = True
End If
End Sub
答案 0 :(得分:4)
您显然错过了If
,而您的代码不应该正常工作。它的格式如下:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B24").Value = "Standard" Then
Sheets("Sheet2").Visible = False
End If
If Range("B24").Value = "Medium" Then
Sheets("Sheet2").Visible = True
End If
If Range("B24").Value = "High" Then
Sheets("Sheet2").Visible = True
End If
'Is this Else an IF?
Else
Sheets("Sheet2").Visible = False
End If
If Range("B24").Value = "Standard" Then
Rows("29:47").EntireRow.Hidden = False
Else
Rows("29:47").EntireRow.Hidden = True
End If
End Sub
如果省略If-Else,使用Select-Case语句代码看起来会更好一点:
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Range("B24")
Case "Standard"
Sheets("Sheet2").Visible = False
Rows("29:47").EntireRow.Hidden = False
Case "Medium"
Sheets("Sheet2").Visible = True
Rows("29:47").EntireRow.Hidden = True
Case "High"
Sheets("Sheet2").Visible = True
Rows("29:47").EntireRow.Hidden = True
Case Else
Sheets("Sheet2").Visible = False
Rows("29:47").EntireRow.Hidden = True
End Select
End Sub
你可以更进一步,在选择案例之前写Rows("29:47").EntireRow.Hidden = True
并从案例中删除这一行,从而遵循Do-Not-Repeat-Yourself原则。但在这种情况下,可能不需要它。
如果你想添加第二个范围,可以这样:
Select Case True
Case Range("B24") = "Standard"
Case Range("B26") = "Medium"
End Select
然而,它只评估一次,因此如果两者都是真的,B26
将不会发生。