【问题标题】:hide sheets in named range array在命名范围数组中隐藏工作表
【发布时间】:2011-02-01 08:36:49
【问题描述】:

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

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

类似:

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

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

请有任何建议。

谢谢 保罗

【问题讨论】:

    标签: arrays excel vba range named


    【解决方案1】:

    你可以在命名范围上循环

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

    【讨论】:

      【解决方案2】:

      Sheets 不能将名称数组作为参数,它被声明为 Sheets(index),因此不幸的是,您需要遍历名称并一个接一个地隐藏工作表。

      试试:

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

      【讨论】:

        【解决方案3】:

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

        这对我有用:

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

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

        提姆

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多