保護状態のシートにマクロからの操作だけを許可

保護状態のシートにマクロからの操作だけを許可し、編集内容を反映させる。

保護されているシートにマクロからの操作のみを許可する方法になります。

シートの保護を設定するには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