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