프로젝트 및 실습/VBA

[VBA] Protected, Lock을 이용해 시트 잠그기

jooona 2022. 6. 14. 21:38
반응형

VBA에서 Protected와 Lock을 이용하면 시트의 내용을 수정하지 못하도록 설정할 수 있습니다. 또한, Locked를 False로 설정하면 원하는 Range만 내용을 수정할 수 있도록 만들 수도 있습니다.

바로 코드를 살펴보겠습니다.

Sub LockOnlySelection()

    Dim pw As String
    pw = "123" 'You can change password
    
    Dim sht As Worksheet
    Set sht = Sheets("Sheet3")

    Dim unlock_target As String
    unlock_target = "A1:B2"

    If sht.ProtectContents = True Then
     'if sheet is protected then unprotect
      sht.Unprotect Password:=pw
    End If
    
    sht.Range(unlock_target).Select
    Selection.Locked = False
    Selection.Cells.Interior.Color = RGB(255, 255, 0)

    sht.Protect Password:=pw

End Sub​

 

우선 4번째 줄 코드처럼 비밀번호를 String 형태로 지정할 수 있습니다.
그리고 10번째 줄 코드에서 잠그지 않을 Range를 설정해줍니다.

우선 시트에 잠금 효과를 주기 위해서는 시트를 Unprotect 상태로 만들어야합니다. 12번째 줄에서 15번째 줄 코드의 if문을 통해 시트가 보호되고 있다면 protect를 풀어줍니다.

그리고 원하는 위치의 Lock 속성을 False로 만들어준 뒤, 다시 시트를 Protect 상태로 바꿔줍니다.

 


시트를 잠그지 않은 부분을 쉽게 확인하기 위해 19번째 줄 코드를 이용해 노란색으로 칠해주었습니다.

 


Range("A1:B2")의 경우 Unlock을 해주었기 때문에 글자를 작성할 수 있습니다.

 


하지만 그 이외의 영역에 대해서는 어떠한 수정도 적용할 수 없습니다.

반응형