반응형
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을 해주었기 때문에 글자를 작성할 수 있습니다.
하지만 그 이외의 영역에 대해서는 어떠한 수정도 적용할 수 없습니다.
반응형
'프로젝트 및 실습 > VBA' 카테고리의 다른 글
[VBA] Access DB 연결 및 Select 실행 (0) | 2022.07.14 |
---|---|
[VBA] Worksheet_change 이벤트 (Sheet 내 값 수정 감지) (0) | 2022.07.08 |
[VBA] Progressbar 사용법 (0) | 2022.06.14 |
[VBA] 리본메뉴에 내가 만든 매크로 추가 (0) | 2022.04.28 |
[VBA] VBA 코드를 이용해 Worksheet 숨기기 (Visible 속성) (0) | 2022.04.28 |