根据范围内单元格的值隐藏Excel工作表

时间:2019-01-02 14:44:22

标签: excel vba

我试图根据给定范围内任何单元格的内容在Excel工作簿中隐藏工作表。

假设我有两张纸:“ Sheet1”和“ Sheet2”。
在Sheet1上,我想设置一个范围-单元格C10至F10。
这些单元格中的每个单元格可以为空白,也可以包含“是”或“否”-从下拉框中选择。
如果该范围内的任何单元格都设置为“是”,则我希望Sheet2可见,否则(如果所有单元格均为空白或包含“否”),我希望隐藏Sheet2。

我尝试了包括以下内容在内的各种代码。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCell As Range

    Application.ScreenUpdating = False
    For Each rCell In Range("C10:F10")
        If rCell.Value = "Yes" Then
            Worksheets("Sheet2").Visible = True
        Else
            Worksheets("Sheet2").Visible = False
        End If
    Next rCell
    Application.ScreenUpdating = True
End Sub

如果所有单元格都等于“是”或F10等于“是”,那么我已经可以看到第2张纸,但是如果只有一个单元格包含“是”,则不是。

2 个答案:

答案 0 :(得分:2)

不需要循环,并创建一个If来测试更改的单元格是否在要测试的范围内,只是为了节省一些计算时间:

delete

答案 1 :(得分:0)

修改并尝试:

Option Explicit

Sub test()

    Dim ws As Worksheet
    Dim rng As Range, cell As Range
    Dim Hide As Boolean

    For Each ws In ThisWorkbook.Worksheets

        Set rng = ws.Range("C10:F10")

        For Each cell In rng
            Hide = False
            If cell.Value = "Yes" Then
                Hide = False
                Exit For
            Else
                Hide = True
            End If
        Next

        If Hide = True Then
            ws.Visible = False
        End If

    Next

End Sub