ほとんどのセルを編集できないように保護する必要がある Excel スプレッドシートがあります。グループで作業しているため、通常の方法でシートを保護することはできません (特定の列を展開するために上部にある小さな +)。
シートを保護する VBA マクロを見つけましたが、Excel 2010 では、ブック全体がまだ保護されていても、単純に「シートの保護を解除」してすべてを変更できることに気付きました。
これは、「ThisWorkbook」で使用するマクロです。
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="nopassword"
If Range("C3").Value = "protect" Then
Range("C4:C65536").Locked = True
Else
Range("C4:C65536").Locked = False
End If
ActiveSheet.Protect Password:="fakepass"
End Sub
Private Sub Workbook_Open()
Dim x As Long
For x = 1 To ActiveWorkbook.Sheets.Count
With ActiveWorkbook.Sheets(x)
.Protect UserInterfaceOnly:=True
.EnableOutlining = True
End With
Next
End Sub
シート 1 で動作するようにこのコードを変更するにはどうすればよいですか?
これが最も安全な保護方法ではないことは承知していますが、単に人々が誤ってセルを変更するのを防ぐためのものです。