【VBA】指定したシート名以外表示しない方法

こんにちは!大阪市を拠点に活動している『縁紡ぐ』の稲垣です。

SWELLを使ったホームページ制作や、Excel、ACCESS、RPAなどのシステム開発を行っています。
また、Excel、Word、Outlookの研修や、情報セキュリティ研修も行っています。身近なITの相談相手になりたいと思っています。

お気軽にお問い合わせください。

目次

【VBA】指定したシート名以外表示しない方法

Excelを配布するときなど、指定したシート以外を非表示にしたい時に役立つ方法をご紹介します。

処理の実行前と実行後

コードは後ほど紹介します。

Sheet1とSheet2のみ表示するように指定して実行

処理コード

以下が処理するするためのコードです。

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

すべてのシートが一時的にも非表示なってしまうとエラーになるので、先に表示処理を行ってから、指定されていないシートを非表示にしています。

シートの非表示には種類があります。こちらで紹介していますので、ご参考ください。

呼び出し側

Sub Test()
    Dim sheetNames As Variant
    sheetNames = "Sheet1,Sheet2"
    Call HideOtherSheets(sheetNames)
End Sub

呼び出す側では、”,”カンマ区切りでシート名を指定します。

まとめ

マスタやトラン用のシートなど、ユーザーが見なくてもよく、さらに変更されるとこまるような場合には、とっても有効な方法です。

ぜひ参考に、してくださいね!

記事を書いた人

稲垣

  • Excel、ACCESSでのシステム開発が得意
  • ITスキルを共有し実践的に学びながら成長する人を見るのが幸せ
  • 自家焙煎するほどのコーヒー好き
  • 使用言語 VBA、Python、Javascript、Java、HTML、CSS etc.
  • 保有資格 Kintoneアソシエイト、日商簿記検定2級、マンション管理士、管理業務主任者、情報セキュリティマネジメント、ExcelVBA etc.
  • 業務フロー図の作成や業務時間分析を通して、効率化ポイントを探る人
  • お客様にとって本当に良いことかを第一に考える人
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次