我有一个动态命名范围,它在列表中提供工作表名称(假设A2 =奥地利,A3 =德国,A4 =波兰)此列表的大小可能因用户而异,因此我在命名中有一个偏移量范围,以捕获列A中的所有单元格,并在其中包含名称。
我想使用IF语句来隐藏基于此命名范围的某些工作表。
类似的东西:
Public Sub test()
Sheets(Array(Range("MyRange"))).Visible = xlVeryHidden
End Sub
以上我得到以下错误: 运行时错误'13': 类型不匹配
请提出任何建议。
谢谢 保罗
答案 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 ....
添