保護状態のシートにマクロからの操作だけを許可し、編集内容を反映させる。
保護されているシートにマクロからの操作のみを許可する方法になります。
シートの保護を設定するにはProtectメソッド利用しますが、ProtectメソッドのUserinterfaceOnlyオプションを利用することで保護されている状態でもマクロ(VBA)からの操作だけは反映され、ユーザの手動シート操作に対してのみ保護が掛かる状態になります。
UserinterfaceOnlyオプションに True を設定するとマクロ(VBA)からの操作だけは反映されるようになります。
'******************************************************************
' 保護状態のシートにマクロからの操作だけを許可
'******************************************************************
Sub editSheetWithMacro()
On Error Resume Next
'Sheet1の保護(マクロのみOK)
With Sheets("Sheet1")
.Protect UserInterfaceOnly:=True
'反映できる確認
.Cells(1, 1) = "Sheet1の更新に成功"
If Err.Number = 0 Then
Debug.Print .Cells(1, 1).Text
Else
Debug.Print "Sheet1の反映に失敗"
End If
End With
'Sheet2の保護
With Sheets("Sheet2")
'シートの保護
.Protect
'反映できる確認
.Cells(1, 1) = "Sheet2の更新に成功"
If Err.Number = 0 Then
Debug.Print .Cells(1, 1).Text
Else
Debug.Print "Sheet2の更新に失敗"
End If
End With
End Sub


