如果不是VBA问题
我的问题是我的代码没有拾取“Medium”变量 您能告诉我它有什么问题吗(“标准”应隐藏行,“中等”应隐藏行,但取消隐藏Sheet2,High应再次隐藏行,但取消隐藏Sheet2,如果(B24)为空,则应隐藏行和Sheet2:如果不是VBA问题,vba,excel,Vba,Excel,我的问题是我的代码没有拾取“Medium”变量 您能告诉我它有什么问题吗(“标准”应隐藏行,“中等”应隐藏行,但取消隐藏Sheet2,High应再次隐藏行,但取消隐藏Sheet2,如果(B24)为空,则应隐藏行和Sheet2: Private Sub Worksheet_Change(ByVal Target As Range) If Range("B24").Value = "Standard" Then Sheets("Sheet2").Visible = False End
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
如果,您显然缺少一个
,并且您的代码不应该工作。这是格式化时的情况:
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
您可以更进一步,在选择的案例之前写入行(“29:47”).EntireRow.Hidden=True
,并从案例中删除这一行,从而遵循请勿重复自己的原则。但在这种情况下,可能不需要这样做
如果要添加第二个范围,可以执行以下操作:
Select Case True
Case Range("B24") = "Standard"
Case Range("B26") = "Medium"
End Select
但是,它只会评估一次,因此,如果两者都是真的,B26
就不会发生。太好了,谢谢你。它工作得很好。PS.@Vityta你能告诉我什么是开发VBA(Microsoft网站?)知识的最佳书籍/资源吗?@WestRay-欢迎:)可能是关于书籍——约翰·沃肯巴赫和汤姆·乌蒂斯(见亚马逊网站),关于网站——cpearson.com。非常感谢!我马上去看看。谢谢:)快速提问:如果我想添加另一个具有类似标准的精选案例范围(“B26”),我会怎么做?@WestRay-请参阅编辑,但这实际上取决于您的具体操作。
Select Case True
Case Range("B24") = "Standard"
Case Range("B26") = "Medium"
End Select