0

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

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

就像是:

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

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

请有任何建议。

谢谢保罗

4

3 回答 3

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
于 2011-02-01T11:13:55.133 回答
1

您可以在命名范围上循环

Sub Test()
dim oCell as range
for each oCell in Range("MyRange)
Sheets(oCell.value).visible=xlVeryHidden
next oCell
end sub
于 2011-02-01T11:14:12.763 回答
0

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

这对我有用:

ThisWorkbook.Sheets(Application.Transpose(Sheet3.Range("SHEETS").Value)).Visible = _ xlSheetHidden

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

蒂姆

于 2011-02-02T07:01:14.800 回答