Sub HideOtherSheets(sheetNames As Variant)
Dim ws As Worksheet
Dim isVisible As Boolean
Dim sheetName As Variant
Dim visibleSheets As Variant
' カンマ区切りの文字列を配列に変換
If VarType(sheetNames) = vbString Then
visibleSheets = Split(sheetNames, ",")
Else
' 既に配列で渡された場合
visibleSheets = sheetNames
End If
' 表示するシートを一時的に全て表示する
For Each ws In ThisWorkbook.Sheets
' 配列内にシート名があるかチェック
isVisible = False
For Each sheetName In visibleSheets
If Trim(ws.Name) = Trim(sheetName) Then ' Trimで前後の空白を除去
isVisible = True
Exit For
End If
Next sheetName
' 表示したいシートを表示
If isVisible Then
ws.Visible = xlSheetVisible
End If
Next ws
' 次に、表示するシート以外を非常に非表示にする
For Each ws In ThisWorkbook.Sheets
isVisible = False
For Each sheetName In visibleSheets
If Trim(ws.Name) = Trim(sheetName) Then
isVisible = True
Exit For
End If
Next sheetName
' 配列にないシートは非常に非表示にする
If Not isVisible Then
ws.Visible = xlSheetVeryHidden
Else
ws.Visible = xlSheetVisible
End If
Next ws
End Sub
コメント