gpt4 book ai didi

Excel VBA 根据工作表名称列表取消隐藏工作表(如果满足特定条件)

转载 作者:行者123 更新时间:2023-12-03 03:18:33 24 4
gpt4 key购买 nike

下面有一个代码,如果工作表出现在 B4 和 B35 之间的列表中,则取消隐藏它们。

我需要添加一种 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

最佳答案

下面的代码根据以下条件取消隐藏工作表:

  • 工作表的名称位于成本跟踪工作表的范围(“B4:B35”)中。
  • 右侧两列不存在“RESERVED”一词。
<小时/>
Sub TestMe()

Dim ws As Worksheet
Dim myRange As Range
Dim myCell As Range

Set ws = ThisWorkbook.Worksheets("Cost Tracking")
Set myRange = ws.Range("b4:b35")

For Each myCell In myRange
If Not IsEmpty(myCell) _
And Not IsError(WorksheetExists(myCell.Value2)) _
And UCase(myCell.Offset(0, 2).Value <> "RESERVED") Then

Worksheets(myCell.Value).Visible = True

End If
Next

End Sub

Function WorksheetExists(sheetName As String) As Boolean
WorksheetExists = Not WorksheetFunction.IsErr(Evaluate("'" & sheetName & "'!A1"))
End Function

关于附加条件,例如隐藏和取消隐藏,您可以考虑进行以下检查:

If Worksheets(myCell.Value).Visible = xlHidden Or _
Worksheets(myCell.Value).Visible = xlVeryHidden Then
Worksheets(myCell.Value).Visible = xlVisible
Else
'something else
End If

(我还没有测试代码,但它应该可以工作......)

关于Excel VBA 根据工作表名称列表取消隐藏工作表(如果满足特定条件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52297879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com