Excelでシートの保護がグレーアウトする問題の解決法|VBAコードを活用してシートを表示する方法

Visual Basic

Excelファイルに複数のシートがある場合、シートの保護機能が有効になっていると、特定のシートで「シートの保護」オプションがグレーアウトすることがあります。この記事では、Excelの「シートの保護」がグレーアウトする問題の解決方法と、VBAコードを使用してシートを表示する方法について解説します。

1. シートの保護がグレーアウトする原因

シートの保護がグレーアウトしている場合、主に以下の原因が考えられます。

  • シートがロックされている:シートが保護されている場合、保護解除が必要です。
  • シートが非表示:非表示になっているシートでは、保護設定が変更できないことがあります。
  • シート保護のパスワード:パスワードが設定されている場合、解除ができないことがあります。

これらの問題を解決するためには、VBAコードを活用してシートを表示したり、保護設定を解除する方法を試みると効果的です。

2. VBAコードを使用してシートを表示する方法

質問のコードでは、シートが非表示にされている状況を処理するために、VBAのコードでシートを表示しています。このコードは、特定のシート(例えばSheet1)を選択した状態で「シートの保護」がグレーアウトしている場合でも、シートを再表示するために使用されます。

以下は、シートを表示するためのVBAコードのサンプルです。

Private Sub CommandButton3_Click()
  Kksu = 0
  Erase Rtg
  For n = 1 To 20
    If Cells(n + 1, 19) = "" Then
      Rtg(0, 0) = n - 1
      Exit For
    End If
    Rtg(n, 0) = Cells(n + 1, 19): Rtg(n, 1) = Cells(n + 1, 20)
  Next
  ActiveWindow.DisplayWorkbookTabs = True
  For i = 3 To Sheets.Count
    Sheets(i).Visible = True
  Next
End Sub

このコードを実行すると、非表示のシートがすべて表示されます。しかし、シートの保護が解除されていない場合、「シートの保護」オプションがグレーアウトしたままになります。

3. シートの保護を解除する方法

「シートの保護」がグレーアウトしている場合は、まずシートの保護を解除する必要があります。シートの保護を解除するには、VBAコードを使用して以下のようにパスワードなしで解除することができます。

Sub UnprotectSheet()
  ActiveSheet.Unprotect
End Sub

このコードを実行することで、シートの保護を解除し、「シートの保護」が有効にすることができるようになります。

4. シート保護の解除後に再表示する

シート保護を解除した後、再度シートを表示することができます。VBAコードを使用して非表示のシートを表示する場合、以下のコードを使用します。

Sub ShowAllSheets()
  For i = 1 To Sheets.Count
    Sheets(i).Visible = True
  Next i
End Sub

これで、シートの保護を解除し、非表示にされていたシートをすべて表示することができます。

5. まとめ

Excelで「シートの保護」がグレーアウトしている場合、シートが保護されているか非表示になっていることが考えられます。VBAコードを使用してシートの表示や保護解除を行うことで、問題を解決することができます。もしシートの保護がパスワードでロックされている場合、パスワードの入力が必要となりますので、その場合はパスワードを確認してください。

コメント

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