Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA根据图纸名称列表取消隐藏图纸(如果符合某些条件)_Excel_Vba - Fatal编程技术网

Excel VBA根据图纸名称列表取消隐藏图纸(如果符合某些条件)

Excel VBA根据图纸名称列表取消隐藏图纸(如果符合某些条件),excel,vba,Excel,Vba,我有一个下面的代码,如果它们出现在B4和B35之间的列表中,则将其取消隐藏 我需要添加一种if语句,如果在相邻的列中它说“reserved”,那么不要取消隐藏它,否则取消隐藏它。我想我需要的代码是 If UCase$(Nm.Offset(0, 2).Value) <> "RESERVED" Then If UCase$(Nm.Offset(0, 1).Value) <> "2" Then 以下代码根据以下标准取消隐藏工作表: 工作表的名称在成本跟踪工作表的范围

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

我需要添加一种if语句,如果在相邻的列中它说“reserved”,那么不要取消隐藏它,否则取消隐藏它。我想我需要的代码是

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

以下代码根据以下标准取消隐藏工作表:

  • 工作表的名称在
    成本跟踪工作表的范围(“B4:B35”)内
  • 右边的两列中不存在单词
    RESERVED


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

非常感谢您的代码,但是我遇到了以下行的问题,因为它说下标超出范围,您知道为什么吗?感谢工作表(myCell)。可见=True@Charlotte879-我想我没有编写
.Value
,因此它不接受范围参数。我编辑过。我一次又一次地尝试过,我知道我遗漏了一些非常简单的东西,但仍然得到相同的错误,下标超出了范围。当我将鼠标悬停在调试程序上时,它只会说myCell.value=empty,猜测它找不到代码的my cell部分,但不确定原因!无法表达我多么感谢你的帮助!非常感激。我现在收到了一个不同的错误,这让我充满希望!上面写着工作表专家。。编译错误,未定义子或函数。你以前看过吗?不知道如何纠正目前试图谷歌@夏洛特879-我在上次编辑时错误地删除了
工作表列表
功能,我添加了它。
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 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