簡體   English   中英

根據范圍內單元格的值隱藏Excel工作表

[英]Hide Excel sheet based on value of a cell in a range

我試圖根據給定范圍內任何單元格的內容在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

如果所有單元格都等於“ Yes”或F10等於“ Yes”,那么工作表2可見,但是如果只有一個單元格包含“ Yes”,則不是。

無需循環,並創建一個If來測試更改的單元格是否在要測試的范圍內,只是為了節省一些計算時間:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("C10:F10"),Target) Is Nothing Then
        Worksheets("Sheet2").Visible = Application.Countif(Range("C10:F10"),"Yes")>0
    End If
End Sub

修改並嘗試:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM