【Excel VBA】VBAでエクセルのワークシートを非表示にしたい

エクセルで作成したワークシートを、他の人に触られたくないといったことがあります。そんな時は、ワークシートを非表示にさせる形でシートを保護することができます。

この記事では、ワークシートの表示と非表示をVBAを使って切り替える方法をご紹介します。

目次

VBAでワークシートを表示する

ワークシートの表示は、WorksheetオブジェクトのVisibleプロパティの値を True に設定します。

Sub シート表示()
    Sheets("点検フォーマット").Visible = True
End Sub

VBAでワークシートを非表示にする

ワークシートの非表示は、Visibleプロパティの値を False に設定します。

Sub シート非表示()
    Sheets("点検フォーマット").Visible = False
End Sub

ワークシート非表示の時にエラーを回避する方法

ワークシートを非表示にした状態のときにそのワークシートを対象にしたコードを記述している場合、マクロ動作時にエラーが発生することがあります。

そういったエラーを回避するため、次のようにVisibleプロパティのコードを追記します。

Sub シートコピー変更保存()
    Dim SelectDate As Date
    Dim SheetName As String
    Dim FileName As String
    
    '翌月1日の日付を取得
    SelectDate = DateSerial(Year(Date), Month(Date) + 1, 1)

    'シート名&エクセル名設定
    SheetName = Format(SelectDate, "YYYY年M月点検表")
    FileName = ThisWorkbook.Path & "\" & Format(SelectDate, "YYYY年M月点検表") & ".xlsx"

  'シート表示
  Sheets("点検フォーマット").Visible = True
    'シートコピー
    Sheets("点検フォーマット").Copy
    With ActiveSheet
        .Name = SheetName
        .[C4] = SelectDate
    End With

    'エクセル保存
    ActiveWorkbook.SaveAs FileName
    ActiveWorkbook.Close

  'シート非表示
    Sheets("点検フォーマット").Visible = False
    MsgBox SheetName & "のエクセルを作成しました。"
End Sub
解説
  • SelectDateに翌月1日の日付、SheetNameにシート名、FileNameに保存するファイル名を代入します。
  • 「点検フォーマット」シートを表示します。
  • 「点検フォーマット」シートを新しいエクセルファイルにコピーし、シート名を変更、C4セルの日付を変更します。
  • 新しいエクセルファイルのファイル名を変更し、閉じます。
  • メッセージを表示させて完了です。

↓先日投稿したシートコピーの実践例に追記してみました。

対象のワークシートが表示状態でないと正常で動作しない場合は、上記のようにコードの前後にVisibleプロパティの値を変更することで、エラーを回避することができます。

まとめ

この記事では、VBAを使ってワークシートを非表示にする方法についてご紹介しました。

’表示する
Sheets("○○○").Visible = True

’非表示にする
Sheets("○○○").Visible = False

非表示にした場合、非表示のままだとマクロが正常に動作しないことがありますので、エラーを回避するときは必ず表示するようにしましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次