マクロを作ったけど、他の人に触られたくないシートがあるときは、ワークシートを非表示にさせる形でシートを保護することができます。
この記事では、ワークシートの表示と非表示を切り替える方法をご紹介します。
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プロパティの値を変更することで、エラーを回避することができます。
コメント