どうも、あおです。
エクセルで複数シートがあるファイルを管理する際、
これとこれのシートは(間違っても)変更したくない
といったことがある場合に便利なマクロ
1.対象のエクセルを開き、Alt+F11を押して、コードを記入画面を起動
※officeのバージョンは、古いですが2003を使用しています。
バージョンによっては、コードを書く画面の表示方法等が
異なるかもしれないので、ネットで調べてください
2.ツールバー「挿入」→「標準モジュール」を押下して、コード貼付け
↓
【コード】
Sub ChoiceSheetLock()
Dim i As Integer
Dim intShCnt As Integer
Dim strSheetName() As String
Dim defaultSheet As Object
Set defaultSheet = ActiveSheet
Application.ScreenUpdating = False
With ActiveWindow
intShCnt = .SelectedSheets.Count
ReDim strSheetName(1 To intShCnt)
For i = 1 To intShCnt
strSheetName(i) = .SelectedSheets(i).Name
Next i
.SelectedSheets(1).Select
For i = 1 To intShCnt
Sheets(strSheetName(i)).Protect
Next i
End With
defaultSheet.Activate
End Sub
3.シートがある画面に戻り、「すべてのシートを選択」
※office2003では、シート名のところで右クリックすると表示されます。
4.Alt+F8を押して、実行画面を表示し、右上の実行ボタンを押下
選択したシートがすべて保護されました
■選択したシートの保護解除を行う場合は、
以下のマクロを同様に実行してください。
Sub ChoiceSheetUnLock()
Dim i As Integer
Dim intShCnt As Integer
Dim strSheetName() As String
Dim defaultSheet As Object
Set defaultSheet = ActiveSheet
Application.ScreenUpdating = False
With ActiveWindow
intShCnt = .SelectedSheets.Count
ReDim strSheetName(1 To intShCnt)
For i = 1 To intShCnt
strSheetName(i) = .SelectedSheets(i).Name
Next i
.SelectedSheets(1).Select
For i = 1 To intShCnt
Sheets(strSheetName(i)).Unprotect
Next i
End With
defaultSheet.Activate
End Sub
これで重要なデータが間違って書き換わってしまうのを防止できます。