隐藏命名范围数组中的工作表

时间:2011-02-01 08:36:49

标签: arrays excel vba range named

我有一个动态命名范围,它在列表中提供工作表名称(假设A2 =奥地利,A3 =德国,A4 =波兰)此列表的大小可能因用户而异,因此我在命名中有一个偏移量范围,以捕获列A中的所有单元格,并在其中包含名称。

我想使用IF语句来隐藏基于此命名范围的某些工作表。

类似的东西:

Public Sub test()
    Sheets(Array(Range("MyRange"))).Visible = xlVeryHidden
End Sub

以上我得到以下错误: 运行时错误'13': 类型不匹配

请提出任何建议。

谢谢 保罗

3 个答案:

答案 0 :(得分:1)

Sheets不能将一个名字数组作为它的参数,它被声明为Sheets(index),所以你需要循环遍历这些名称并不幸地逐个隐藏它们。

尝试:

Sub test()
    Dim rngCell As Range
    For Each rngCell In Range("MyRange")
        Sheets(rngCell.Value).Visible = xlSheetVeryHidden
    Next rngCell
End Sub

答案 1 :(得分:1)

你可以循环命名范围

Sub Test()
dim oCell as range
for each oCell in Range("MyRange)
Sheets(oCell.value).visible=xlVeryHidden
next oCell
end sub

答案 2 :(得分:0)

您可以将数组传递给Sheets(),但如果您从垂直范围获取它,则需要先将其转置。

这对我有用:

ThisWorkbook.Sheets(Application.Transpose(Sheet3.Range(“SHEETS”)。Value))。Visible = _                                                                         xlSheetHidden

其中SHEETS包含值“Sheet1”和“Sheet2”。 不幸的是,出于某种原因,它似乎只适用于xlSheetHidden而不适用于xlSheetVeryHidden ....