- 최초 작성일: 2002-09-10
- 최종 수정일: 2026-09-30
- 조회수: 9 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 이름 숨기기와 나타내기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
I want to die knowing one more thing. 나는 한 가지라도 더 알면서 죽고 싶다.
유명한... 소크라테스가 한 말입니다. '알고 죽는' 것이 아니라 '알면서 죽는다'는 표현이 가슴에 와 닿습니다.
이름 숨기기와 나타내기
핵심 요약: 이름 숨기기와 나타내기
Name 개체의 Visible 속성을 False로 지정하면 이름을 삭제하지 않고 이름 상자와 이름 정의 대화상자에서 감출 수 있습니다.
- 1단계: ThisWorkbook.Names의 모든 Name 개체를 For Each로 순환합니다.
- 2단계: Visible 속성을 False로 지정해 이름을 숨깁니다.
- 3단계: Static 변수를 반전시켜 실행할 때마다 숨김과 표시를 번갈아 처리합니다.
Step 1: 이름 정의 확인하기
영역(Range)에 이름을 정의해 두고 사용하면 여러 모로 편리하다는 것은 그동안 누차 강조를 하였으므로 다들 아실 것입니다.
현재 워크북에 어떤 이름들이 정의되어 있는 지 확인하려면 이름 상자(Name Box)를 클릭하거나 '삽입-이름-정의' 메뉴를 선택해 보면 됩니다.
Step 2: 이름 숨기기
그런데 경우에 따라서는 이렇게 이름을 지어놓은 것을 감추어 버리고 싶을 경우가 있을 것입니다. 버튼을 누른 다음 이름 박스 또는 '삽입-이름-정의' 메뉴를 선택해 보세요. 이름들이 감쪽같이 사라져 있을 것입니다.
Sub HideAllNames()
Dim nmeName As Name
For Each nmeName In ThisWorkbook.Names
nmeName.Visible = False
Next nmeName
MsgBox "이름을 모두 감추었습니다", , "www.iExceller.com"
End Sub
Name 개체의 Visible 속성을 False로 지정하면 이름은 삭제되지 않고 목록에서만 보이지 않게 됩니다.
Step 3: 이름 숨김/표시 전환하기
이번에는 버튼을 누를 때마다 이름이 나타났다 숨겨졌다 하도록 해 볼까요?
Sub HideAndShowNames()
Dim nmeName As Name
Static blnShow As Boolean
' 버튼을 누를 때마다 기존의 값을 보관하고 있도록 하기 위해 Static 변수를 하나 선언하였습니다.
For Each nmeName In ThisWorkbook.Names
nmeName.Visible = blnShow
Next nmeName
blnShow = Not blnShow
' 프로시저를 한번 실행할 때마다 논리값을 반대로 바꾸어 줍니다.
End Sub
Step 4: Global Name과 Local Name
이름에 대해 얘기가 나온 김에 한 가지 더! 이름은 크게 Global Name과 Local Name으로 나눌 수 있습니다.
Global Name 이라는 것은 워크북 전체에 걸쳐 사용할 수 있는 이름이고, Local Name 이라는 것은 특정 워크시트에서만 사용할 수 있는 이름을 의미합니다. 변수에서도 전역 변수와 로컬 변수가 있었지요? 이와 비슷한 개념입니다.
Global Name은 우리가 지금까지 위에서 살펴본 일반적인 이름이라고 생각하시면 되겠습니다. 즉 범위를 지정하고 이름 상자에 적당한 이름을 입력한 다음 엔터키를 치면 Global Name으로 지정이 되는 것이지요.
그렇다면 Local Name은 어떻게 정의하느냐? 범위를 지정한 다음, ''시트명!이름명'과 같이 이름 앞에 시트명! 표시를 함께 붙여주면 됩니다. 만약 워크북에 Global Name과 Local Name이 같은 것이 있다면 해당 시트 내에서는 Local Name이 우선합니다.
현재 워크북에는 5개의 이름이 정의되어 있습니다. 이 중 4개는 Global Name이고 나머지 하나는 Local Name입니다. 시트를 이동해 가면서 확인해 보세요.
오늘은 여기까지…
정리 — 이름 숨김·표시 핵심 코드
| 구분 | 사용한 코드 | 역할 |
|---|---|---|
| 이름 순환 | For Each nmeName In ThisWorkbook.Names | 모든 이름 접근 |
| 숨기기 | nmeName.Visible = False | 이름 감추기 |
| 전환 | blnShow = Not blnShow | 논리값 반전 |
| 값 보존 | Static blnShow As Boolean | 실행 간 값 유지 |
| Local Name | 시트명!이름 | 특정 시트에서만 사용 |
자주 묻는 질문 (FAQ)
Q1. 이름을 숨기면 삭제되는 건가요?
아닙니다. Visible 속성이 False가 되어 목록에서 보이지 않을 뿐 이름은 그대로 사용할 수 있습니다.
Q2. Global Name과 Local Name은 무엇이 다른가요?
Global Name은 통합 문서 전체에서, Local Name은 특정 워크시트에서만 사용할 수 있는 이름입니다. 같은 이름이 있으면 해당 시트에서는 Local Name이 우선합니다.
Q3. Local Name은 어떻게 정의하나요?
범위를 선택하고 이름 상자에 시트명!이름 형태로 시트 이름을 붙여 입력하면 됩니다.
마치며
이름을 숨겨 두면 사용자가 실수로 이름을 건드리는 일을 줄일 수 있습니다. Static 변수를 이용한 전환 방식도 함께 익혀 두시기 바랍니다.