【Excel VBA】ワークシートを非表示にしたい

マクロを作ったけど、他の人に触られたくないシートがあるときは、ワークシートを非表示にさせる形でシートを保護することができます。

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

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

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

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

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

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

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

エラー回避のためにコードの前に表示し、最後に非表示にする

ワークシートを非表示にした状態だと、ActiveSheetなどのコードで記述している場合、マクロがうまく動作しないことが考えられます。

そういったエラーを回避するため、次のように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

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

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

コメント

タイトルとURLをコピーしました