遍历工作表CodeNames VBA数组

时间:2018-08-16 10:28:25

标签: arrays vba excel-vba loops

我想使用VBA遍历特定的工作表,以便在隐藏时取消隐藏它们。 我想使用工作表的代号,而不是索引或名称。

我已经尝试过类似的操作,但是它在行上返回错误“ object required”
如果HiddenSheets(sCounter).Visible = xlSheetHidden然后

***新信息:我正在单独的工作簿中编写此代码。我为该工作簿WB_Master创建了一个变量。也许我应该使用此变量以某种方式从该工作簿中调用工作表?

Dim HiddenSheets As Variant
Dim sCounter As Long

HiddenSheets = Array(Sheet4, Sheet5, Sheet6, Sheet25, Sheet26, Sheet27, Sheet33)

For sCounter = LBound(HiddenSheets) To UBound(HiddenSheets)
    If HiddenSheets(sCounter).Visible = xlSheetHidden Then
        HiddenSheets(sCounter).Visible = xlSheetVisible
    End If
Next sCounter

1 个答案:

答案 0 :(得分:0)

您仍然可以在单独的工作簿中使用图纸的代号:

  • 将代码名作为字符串存储在HiddenSheets

  • 循环浏览您的单独工作簿工作表,并检查其CodeName是否位于HiddenSheets

如下:

Sub UnHideSheets()
    Dim HiddenSheets As Variant
    HiddenSheets = Array("Sheet4", "Sheet5", "Foglio2", "Sheet25", "Sheet26", "Sheet27", "Sheet33") ' store codenames as strings

    Dim sh As Worksheet
    For Each sh In Workbooks("WB_Master").Worksheets ' loop through your "separate" workbook worksheets (change "WB_Master" to your actual "separate" workbook name)
        If Not IsError(Application.Match(sh.CodeName, HiddenSheets, 0)) Then sh.Visible = xlSheetVisible
    Next
End Sub