2015-10-14 49 views
-1

名的Excel VBA隐藏表我想隐藏他们的名字是"ABC", "DEF", "GHI"在阵列

这是我的代码的所有标签:

Sub hideSheets() 
Dim ws As Worksheet 
invisible = Array("ABC", "DEF", "GHI") 

For Each ws In ActiveWorkbook.Worksheets 
    For Each nome In invisible 
     If ws.Name = nome Then 
      ws.Visible = False 
     Else 
      ws.Visible = True 
     End If 
    Next nome 

Next ws 

End Sub 

这是没有隐瞒任何表。

+0

这已被回答[这里](http://stackoverflow.com/questions/853270/hiding-an-excel-sheet)。您需要在'='后面使用:xlSheetVeryHidden,xlSheetHidden或xlSheetVisible而不是true或false。 –

+0

@ScottCraner该问题的答案没有解决问题标题中的数组组件。另外,你的评论虽然没有错,但却是误导性的。 'xlSheetHidden = 0',与False完全相同,'xlSheetVisible = -1'完全等同于True。所以这两个可见状态可以并经常通过使用简单的布尔值来实现。 'xlSheetVeryHidden = 2'可以用常量或文字或表达式来设置。无论如何,其他问题都没有涉及这个问题。 –

+0

@ExcelHero与往常一样,我向你的知识鞠躬。 –

回答

2

要隐藏你的invisible阵列片,它是如此简单:

Sheets(invisible).Visible = False 

注:这很适合躲藏。要再次显示工作表,您必须逐一设置每个工作表;你不能在一行中使用数组来隐藏。

+0

哈哈!这真的很简单! –

+0

任何其他简单的方法来取消隐藏不在该数组中的任何内容? –

+0

没有。取消隐藏需要一次完成一张。 –

1

取出else。它隐藏它,但在下一个循环中,它再次取消隐藏。

Dim ws As Worksheet 
invisible = Array("ABC", "DEF", "GHI") 

For Each ws In ActiveWorkbook.WorkSheets 

    For Each nome In invisible 
     If ws.name = nome Then 
      ws.Visible = False 
     End If 
    Next nome 

Next ws