Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

Excel에서 셀, 열, 행을 잠그면 데이터를 안전하게 보호할 수 있습니다. 워크시트를 보호하면 기본적으로 모든 셀이 잠기는 상태가 되어 편집이 불가능하지만, 특정 셀만 선택적으로 잠그면 나머지 셀에서는 자유롭게 작업을 계속할 수 있습니다. 이 글에서는 VBA를 활용해 셀을 잠그고 잠금 해제하는 6가지 실전 예제를 단계별로 소개하고, 마지막에는 VBA 없이 셀을 잠그는 방법까지 함께 다룹니다.

아래 연습용 통합 문서를 내려받아 직접 따라 해 보세요.

예제에 사용할 샘플 데이터

Excel의 VBA(Visual Basic for Applications)는 복잡한 작업도 간단한 코드 몇 줄로 처리할 수 있는 강력한 도구입니다. 여기서는 영업 사원(Salesman), 제품(Product), 순매출(Net Sales) 데이터가 입력된 B4:D10 범위의 샘플 데이터셋을 활용해 다양한 방식으로 셀을 잠그고 해제하는 방법을 살펴보겠습니다.

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

1. VBA로 워크시트 전체 셀 잠그기

첫 번째 예제는 워크시트에 있는 모든 셀을 한 번에 잠그는 가장 기본적인 방법입니다.

실행 단계:

  • 리본 메뉴에서 개발 도구 ➤ Visual Basic을 클릭합니다.
  • VBA 편집기 창이 열리면 삽입 ➤ 모듈을 선택해 새 모듈을 만듭니다.
  • 모듈 창에 아래 코드를 붙여 넣습니다.
Sub AllCells()
Sheets("All Cells").Cells.Locked = True
Sheets("All Cells").Protect
End Sub

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

  • 파일을 저장한 후 F5 키를 눌러 코드를 실행합니다.
  • 이후 잠긴 셀을 편집하려고 하면 아래와 같은 경고 대화상자가 나타나며 수정이 차단됩니다.

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

2. 체크 박스로 특정 셀만 잠그고 해제하기

두 번째 예제에서는 지정한 범위의 셀만 잠그는 방법과 함께, 체크 박스를 통해 잠금 상태를 손쉽게 제어하는 방법을 알아봅니다.

실행 단계:

  • 먼저 셀 범위 B4:D10의 이름을 Table1로 정의합니다.
  • 개발 도구 ➤ 삽입 ➤ 확인란(Check Box)을 클릭한 뒤 원하는 위치에 체크 박스를 배치합니다.
  • 시트 탭에서 마우스 오른쪽 버튼을 클릭하고 코드 보기(View Code)를 선택합니다.
  • 열린 코드 창에 아래 코드를 입력합니다.
Private Sub CheckBox1_Click()
Range("Table1").Select
On Error Resume Next
If CheckBox1.Value = True Then
    Selection.Locked = False
    MsgBox Selection.Address & " Cell Range is Unlocked", vbInformation, "ExcelDemy"
Else
    Selection.Locked = True
    MsgBox Selection.Address & " Cell Range is Locked", vbInformation, "ExcelDemy"
End If
End Sub

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

  • 파일을 저장하고 F5 키로 코드를 실행합니다.
  • 체크 박스를 선택하면 해당 셀이 잠금 해제되고 아래와 같은 알림이 표시됩니다.

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

  • 반대로 체크를 해제하면 셀이 다시 잠깁니다.

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

3. 수식이 들어 있는 셀만 잠그기

세 번째 예제는 수식이 입력된 셀만 선별하여 잠그는 방법입니다. 수식은 그대로 보호하면서 일반 값은 자유롭게 수정할 수 있어 실무에서 매우 유용합니다.

실행 단계:

  • 예제 1과 동일한 방법으로 모듈 창을 엽니다.
  • 아래 코드를 입력합니다.
Sub LockCellsWithFormulas()
For Each Rng In ActiveSheet.Range("B5:D10")
If Rng.HasFormula Then
Rng.Locked = True
Else
Rng.Locked = False
End If
Next Rng
ActiveSheet.Protect "111"
End Sub

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

  • RunSub 버튼을 클릭해 코드를 실행합니다.
  • 수식이 포함된 셀만 자동으로 잠기므로, 예를 들어 수식이 들어 있는 D7 셀은 더 이상 편집할 수 없습니다.

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

4. 특정 셀을 제외한 워크시트 전체 잠그기

네 번째 예제는 지정한 일부 셀만 잠금 해제 상태로 두고 나머지 워크시트 전체를 잠그는 방법입니다. 아래 코드에서는 B5:D10 범위만 잠금 해제 상태를 유지하고, 코드 실행 후 나머지 영역은 모두 보호됩니다.

Sub WorksheetExceptFewCells()
Dim wb As Workbook
Set wb = ActiveWorkbook
wb.Sheets("Entire Worksheet Except Few").Range("B5:D10").Locked = False
wb.Sheets("Entire Worksheet Except Few").Protect Password = "111"
End Sub

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

5. 데이터 입력 후 자동으로 셀 잠그기

다섯 번째 예제는 지정된 범위에 데이터를 입력하면 해당 셀이 자동으로 잠기도록 설정하는 방법입니다. 입력 완료 후 실수로 값이 변경되거나 삭제되는 것을 방지하는 데 효과적입니다.

실행 단계:

  • 시트 이름에서 마우스 오른쪽 버튼을 클릭하고 코드 보기를 선택한 뒤, 아래 코드를 입력합니다.
Dim rg As Range
Dim str As String
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("B4:D10"), Target) Is Nothing Then
    Set rg = Target.Item(1)
    str = rg.Value
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xg As Range
    On Error Resume Next
    Set xg = Intersect(Range("B4:D10"), Target)
    If xg Is Nothing Then Exit Sub
    Target.Worksheet.Unprotect Password:="111"
    If xg.Value <> str Then xg.Locked = True
    Target.Worksheet.Protect Password:="111"
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("B4:D10"), Target) Is Nothing Then
    Set rg = Target.Item(1)
     str = rg.Value
End If
End Sub

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

  • RunSub 버튼 또는 F5 키로 코드를 실행합니다.
  • B4:D10 범위에 값을 입력하면 해당 셀이 자동으로 잠깁니다.
  • 이후 잠긴 셀을 수정하려 하면 아래와 같은 경고 대화상자가 표시됩니다.

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

6. VBA로 셀 잠금 해제하기

마지막 예제는 앞서 잠근 셀을 다시 해제하는 방법입니다. 아래 코드를 실행하면 워크시트의 잠금이 풀리고 모든 셀을 자유롭게 편집할 수 있습니다.

Sub UnlockCells()
Sheets("Unlock Cells").Cells.Locked = False
Sheets("Unlock Cells").Unprotect
End Sub

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

VBA 없이 Excel에서 셀 잠그고 잠금 해제하는 방법

VBA를 사용하지 않고도 셀 서식 대화상자를 이용해 셀을 잠그거나 해제할 수 있습니다. 단, 셀 잠금 설정만으로는 효과가 없으며 반드시 워크시트 보호를 적용해야 실질적인 보호가 이루어진다는 점에 유의하세요.

실행 단계:

  • 먼저 원하는 셀 범위를 선택합니다.
  • Ctrl + 1 키를 동시에 눌러 셀 서식 대화상자를 엽니다.
  • 보호 탭에서 필요에 따라 잠금(Locked) 항목을 체크하거나 체크 해제합니다.

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

  • 워크시트를 보호하려면 검토 탭으로 이동합니다.
  • 보호 드롭다운에서 시트 보호를 선택하면 시트 보호가 적용됩니다.

Excel VBA로 셀 잠금 및 잠금 해제하기: 초보자도 따라 하는 6가지 실전 예제

마무리

지금까지 소개한 예제들을 따라 하면 Excel VBA를 활용해 셀을 자유롭게 잠그고 해제할 수 있습니다. 중요한 셀만 선별적으로 잠그면 데이터를 실수로 삭제하거나 다른 사람이 임의로 수정하는 것을 효과적으로 막을 수 있습니다. 각 예제의 코드를 응용하면 업무 환경에 꼭 맞는 보호 규칙을 만들 수 있으니, 직접 적용해 보고 더 좋은 방법이 있다면 의견을 공유해 주세요.