VBA代码,用于根据带有if条件的列表取消隐藏选项卡



我下面有一个代码,如果工作表出现在名为"成本跟踪"的选项卡上的 B4 和 B35 之间的列表中,则会取消隐藏工作表。 我需要添加一种"if"语句,如果在右侧相邻的第二列中显示"保留",则不要取消隐藏它,否则取消隐藏它。我认为我需要的 If 代码是...

If UCase$(Nm.Offset(0, 2).Value) <> "RESERVED" Then
If UCase$(Nm.Offset(0, 1).Value) <> "2" Then

但是我有点困惑如何将其包含在代码中。有没有办法阻止第二次单击按钮重新隐藏所有内容,大概这是我在代码中意外设置的东西。任何帮助非常感谢。

Sub Button5_Click()
Dim sh As Worksheet, ws As Worksheet
Dim shList As Variant
Set ws = ThisWorkbook.Sheets("Cost Tracking")
shList = Application.Transpose(ws.Range("b4:b35"))
For Each sh In ThisWorkbook.Sheets
If Not IsError(Application.Match(sh.Name, shList, 0)) Then
sh.Visible = Not sh.Visible
End If
Next
End Sub

尝试,

Sub Button5_Click()
Dim sh As Worksheet, ws As Worksheet
Dim m As Variant
Set ws = ThisWorkbook.workSheets("Cost Tracking")
For Each sh In ThisWorkbook.workSheets
m = Application.Match(sh.Name, ws.Range("b4:b35"), 0)
If Not IsError(m) Then
sh.Visible = cbool(lcase(ws.cells(m+3, "D").value2) <> "reserved")
End If
Next
End Sub

你可以这样使用它

If UCase$(Nm.Offset(0, 2).Value) <> "RESERVED" Then
sh.Visible = False
End If

请注意,sh.Visible = Not sh.Visible切换可见性,而sh.Visible = False隐藏工作表。

最新更新