1

ほとんどのセルを編集できないように保護する必要がある 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 で動作するようにこのコードを変更するにはどうすればよいですか?

これが最も安全な保護方法ではないことは承知していますが、単に人々が誤ってセルを変更するのを防ぐためのものです。

4

2 に答える 2

1

変更する場合:

ActiveSheet.Protect Password:="fakepass" 

に:

Worksheets("Sheet1").Protect Password:="fakepass"

アクティブなシートだけではなく、Sheet1 に適用されます。

または、次のようなマクロを作成して、すべてのシートを保護することもできます。

Sub ProtectAll()

Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
ws.Protect Password:="fakepass", DrawingObjects:=True, Contents:=True, Scenarios:=True
Next ws

End Sub

そして、それをメイン コードに呼び出しますか?

于 2014-07-19T11:03:50.547 に答える