我试图根据给定范围内任何单元格的内容在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张纸,但是如果只有一个单元格包含“是”,则不是。
答案 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