프로젝트 및 실습/VBA

[VBA] VBA 코드를 이용해 Worksheet 숨기기 (Visible 속성)

jooona 2022. 4. 28. 22:18
반응형

Worksheet의 visible 속성에서는 아래와 같이 3가지 옵션을 사용할 수 있습니다.

 

1
2
3
4
5
6
7
8
9
Sub hideSheet()
    Dim sht As Worksheet
    Set sht = Sheet2
 
    sht.Visible = xlSheetVisible '기본 값
    sht.Visible = xlSheetHidden
    sht.Visible = xlSheetVeryHidden
 
End Sub
cs

 

첫 째는 xlSheetVisible. 이름에서도 유추할 수 있듯이 sheet를 숨기지 않고 그대로 보여주는 속성입니다.

 

그렇다면, xlSheetHidden과  xlSheetVeryHidden의 차이는 무엇일까요? 이름으로부터 xlSheetVeryHidden이 조금 더 높은 수준의 숨김을 지원하는 것 같은 느낌을 받을 수 있죠?

 

우선 xlSheetHidden부터 테스트를 해보겠습니다.

 

 

일단 Sheet2를 만들어줍니다. 이제 이 Sheet2를 숨겨보겠습니다.

 

[Alt + F11] 키를 통해 Visual Basic 편집기로 들어갑니다. 

 

 

위와 같이 Sheet2를 더블 클릭한 뒤, 오른쪽의 코드 작성란에 다음의 코드를 써줍니다.

 

1
2
3
4
5
6
7
Sub hideSheet()
 
    Dim sht As Worksheet
    Set sht = Sheet2
    sht.Visible = xlSheetHidden
    
End Sub
cs

 

그런 뒤 아래의 현재_통합_문서를 더블 클릭한 뒤, 코드 작성란에 다음의 코드를 써줍니다.

 

 

1
2
3
Private Sub Workbook_open()
    Call Sheet2.hideSheet
End Sub
cs

 

이제 실행을 해보겠습니다. 윗쪽의 재생 버튼을 누르면 실행이 됩니다.

 

 

Sheet2가 정상적으로 감춰졌습니다. 하지만 Sheet1에 마우스 포인터를 올려두고 우클릭을 해볼까요?

 

 

[숨기기 취소] 버튼이 있네요. 이 버튼을 눌러보면?

 

 

숨어있는 Sheet2를 찾아낼 수 있습니다. [확인] 키를 눌러보면 원래대로 Sheet1 옆에 Sheet2가 나란히 보이는 것을 확인할 수 있습니다.

 

그렇다면 이렇게 허술하게 숨기는 것이 아닌, 확실하게 숨기는 방법이 있을까요?

 

네, 바로 xlSheetVeryHidden을 사용하는 것입니다.

 

다시 [Alt + F11]을 눌러 Visual Basic 편집기로 돌아간 뒤, Sheet2의 코드에서 xlSheetHidden만 xlSheetVeryHidden으로 바꾸어보겠습니다. 그리고 바로 실행을 해보죠.

 

1
2
3
4
5
6
7
Sub hideSheet()
 
    Dim sht As Worksheet
    Set sht = Sheet2
    sht.Visible = xlSheetVeryHidden
    
End Sub
cs

 

 

Sheet2가 사라진 것은 물론, 숨기기 목록에도 나타나지 않는 것을 확인할 수 있습니다.

반응형