본문 바로가기

엑셀/VBA

엑셀 VBA 워크시트 숨기기 및 보호 메서드 - Visible, Protect

반응형

이전 글에서 워크시트 삭제, 복사 및 이동 메서드에 대해 알아보았습니다. 이번에는 워크시트를 숨기거나 보호하는 메서드 Visible, Protect에 대해 알아보고, 아울러 보호를 해제하는 메서드 UnProtect에 대해 알아보겠습니다.

 

엑셀 VBA 워크시트 삭제, 복사 및 이동 메서드 - Delete, Copy, Move

 

엑셀 VBA 워크시트 삭제, 복사 및 이동 메서드 - Delete, Copy, Move

이전 글에서 워크시트 활성화 및 선택, 추가 메서드에 대해 알아보았습니다. 이번에는 시트를 삭제하는 메서드 Delete와 복사 메서드 Copy, 이동 메서드 Move에 대해 알아보겠습니다. 1. Delete 메서드

mr-johndoe.tistory.com

 

 

 

 

1. Visible 메서드

  Visible 메서드는 워크시트를 보이지 않게 숨기는 경우 사용하는 메서드입니다. 사용 방법은 다음과 같습니다.

 

   Worksheets(워크시트 이름).Visible = 내장 상수 또는 Bool값(True or False)

 

워크시트 이름을 가진 시트를 내장 상수에 따라 숨기기합니다.

 

내장 상수는 다음과 같습니다.

내장 상수 설 명
xlSheetVisible 워크시트를 표시
xlSheetHidden [숨기기 취소] 메뉴가 활성화된 상태로 워크시트를 숨김
xlSheetVeryHidden [숨기기 취소] 메뉴가 비활성화된 상태로 워크시트를 숨김

 

2. Protect 메서드

  Protect 메서드는 워크시트를 보호할 때 사용하는 메서드입니다. Protect 메서드에는 여러 가지 매개변수가 사용될 수 있는데, 사용되는 매개변수를 아래 표에 정리해 보았습니다.

매개변수 설 명
Password 워크시트 암호 설정
DrawingObjects 개체 편집 여부 (기본값 : True)
Contents 잠긴 셀 보호 여부 (기본값 : True)
Scenarios 시나리오 편집 여부 (기본값 : True)
UserInterfaceOnly True : 사용자 수정 방지, False : 사용자 및 매크로로 수정 방지 (기본값 : False)
AllowFormattingCells 셀 서식 허용 여부 (기본값 : False)
AllowFormattingColumns 열 서식 허용 여부 (기본값 : False)
AllowFormattingRows 행 서식 허용 여부 (기본값 : False)
AllowInsertingColumns 열 삽입 허용 여부 (기본값 : False)
AllowInsertingRows 행 삽입 허용 여부 (기본값 : False)
AllowInsertingHyperlinks 하이퍼링크 삽입 여부 (기본값 : False)
AllowDeletingColumns 열 삭제 허용 여부 (기본값 : False)
AllowDeletingRows 행 삭제 허용 여부 (기본값 : False)
AllowSorting 정렬 사용 여부 (기본값 : False)
AllowFiltering 필터 설정 사용 여부 (기본값 : False)
AllowUsingPivotTables 피벗 테이블 사용 여부 (기본값 : False)

 

사용 방법은 다음과 같습니다.

 

   Worksheet.Protect (매개변수)

 

시트 보호를 해제하는 경우에는 UnProtect 메서드를 다음과 같이 사용합니다.

 

   Worksheet.UnProtect (매개변수)

 

매개변수에는 Password가 있으며 이는 시트 보호를 해제할 때 사용할 암호를 설정합니다.

 

 

 

 

3. 예제로 확인

  엑셀을 열고 시트에 ActiveX 버튼을 두 개 생성합니다. 그리고, 하나는 '워크시트 숨기기'로, 다른 하나는 '워크시트 보이기'라 Caption을 작성합니다.

 

먼저, '워크시트 숨기기' 버튼을 마우스 왼쪽 버튼으로 더블 클릭하여 코드 창을 열고 다음과 같이 작성합니다.

 

   Private Sub Button_WS_Unview_Click()

      Worksheets("sheet2").Visible = False

   End Sub

 

이 버튼을 누르기 전에 엑셀 파일에 시트를 여러 개 만들어 놓습니다. sheet2는 여러분이 만드신 엑셀 파일의 워크시트 중에서 숨기기를 원하는 시트 이름으로 입력하시면 됩니다.

 

'워크시트 숨기기' 버튼을 클릭하시면 해당하는 워크시트가 화면에서 사라지는 것을 보실 수 있습니다.

 

이번에는 '워크시트 보이기' 버튼을 마우스 왼쪽 버튼으로 더블 클릭하고 다음과 같이 작성합니다.

 

   Private Sub Button_WS_View_Click()

      Worksheets("sheet2").Visible = True

   End Sub

 

'워크시트 보이기' 버튼을 클릭하시면 sheet2 워크시트가 다시 화면에 나타납니다.

 

만약, 숨겨진 워크시트가 많아 한번에 모두 보이도록 하시려면 다음과 같이 코드를 작성합니다.

 

   Private Sub Button_WS_View_Click()

      Dim sh As Worksheet

 

      For Each sh In ThisWorkbook.Worksheets

         sh.Visible = xlSheetVisible

      Next

   End Sub

 

워크시트 형식의 변수 sh를 선언하여 For 문을 이용해 해당 파일에 있는 워크시트를 변수에 입력하고 입력된 워크시트를 화면에 보이도록 하는 코드입니다. 버튼을 클릭하여 실행하시면 숨겨진 시트들이 모두 나타납니다.

 

ActiveX 버튼을 '워크시트 보호'라고 Caption을 작성하여 만들고 다음과 같이 코드를 작성합니다.

 

   Private Sub Button_WS_Protect_Click()

      ActiveSheet.Protect Password:="1111", UserInterfaceOnly:=True

   End Sub

 

그리고, 버튼을 클릭하면 버튼이 있는 시트가 보호가 됩니다. 시트의 아무 셀이나 클릭하여 수정하려고 하면 다음과 같은 메시지 창이 출력됩니다.

 

시트보호-메시지창

 

이제 다른 워크시트에 ActiveX 버튼을 '워크시트 보호해제'라고 작성하여 만들고 아래와 같이 코드를 작성합니다.

 

   Private Sub Button_WS_UnProtect_Click()

      Worksheets("sheet1").Unprotect = True

   End Sub

 

보호된 sheet1 워크시트의 보호를 해제하라는 코드이며 버튼을 클릭하면 아래와 같이 암호를 입력하라는 메시지 창이 출력됩니다.

 

시트보호해제-암호입력창

 

암호는 Protect 메서드로 시트를 보호할 때 설정한 암호를 입력하고 확인 버튼을 클릭하시면 해당 워크시트 보호가 해제됩니다.

 

반응형