エクセルで作成したワークシートを、他の人に触られたくないといったことがあります。そんな時は、ワークシートを非表示にさせる形でシートを保護することができます。
この記事では、ワークシートの表示と非表示を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セルの日付を変更します。
- 新しいエクセルファイルのファイル名を変更し、閉じます。
- メッセージを表示させて完了です。
↓先日投稿したシートコピーの実践例に追記してみました。
あわせて読みたい


【Excel VBA】エクセルのシート(Sheet)をコピーする
Excelでフォーマット(決まった様式、ひな形、書式等)のシートをコピーして一部を変更し、使いたいといった場面は多いかと思います。 この記事では、VBAでシートをコピ…
対象のワークシートが表示状態でないと正常で動作しない場合は、上記のようにコードの前後にVisibleプロパティの値を変更することで、エラーを回避することができます。
まとめ
この記事では、VBAを使ってワークシートを非表示にする方法についてご紹介しました。
’表示する
Sheets("○○○").Visible = True
’非表示にする
Sheets("○○○").Visible = False
非表示にした場合、非表示のままだとマクロが正常に動作しないことがありますので、エラーを回避するときは必ず表示するようにしましょう。
コメント