首页 > 解决方案 > 尝试根据单元格范围的单元格值隐藏工作表到工作表范围

问题描述

我有一本工作簿,在工作表方面变得非常紧凑。我不会一直使用它们,所以我想根据我正在做的事情隐藏未使用的那些。

我有一个主索引,其中有一列具有 G2:G30 的值范围,以指示是否显示工作表。我有一系列的工作表,这些工作表的编号范围从 1、2、3、..... 到 26。我有一个简单的 VBA 解决方案,它将显示“Y”的单个 G2 以显示或显示否则隐藏。我对这将如何迭代这两个范围以匹配事物的线索为零。它们是增量的。

Private Sub Worksheet_Change(ByVal Target As Range)
    If [G2] = "Y" Then
        Sheets("1").Visible = True
    Else
        Sheets("1").Visible = False
    End If
End Sub

我真的需要它来遍历范围以指示工作表中的工作表。

标签: excelvbaloopscellshow-hide

解决方案


我想建议您对您的要求进行一些更改。如果在单元格 H2:H30 中添加工作表名称,则可以执行以下操作:

Dim SheetRef As Range
Dim TargetSheet As Worksheet
For Each SheetRef In Range("G2:G30")
    Set TargetSheet = ThisWorkbook.Worksheets(SheetRef.Offset(0, 1).Value)
    TargetSheet.Visible = (UCase(SheetRef.Value) = "Y")
Next

这将从 G2、G3 等右侧的单元格中读取工作表的名称,并使用它来控制可见性。
如果您不这样做,您将不得不找到另一种方法来了解哪个切换指的是哪个工作表。


推荐阅读