[英]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.