- 최초 작성일: 2025-01-24
- 최종 수정일: 2026-09-27
- 조회수: 16 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: VBA 파워 코딩 247회 - 스크롤 영역 제한
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
워크시트의 특정한 영역에서만 셀 포인터가 움직이도록 할 수 없느냐는 질문을 가끔 받습니다. 워크시트 개체의 ScrollArea 속성을 이용하면 간단히 해결할 수 있습니다.
특정한 영역 내에서만 스크롤되게 하는 Code
핵심 요약: ScrollArea로 셀 포인터 이동 범위 제한하기
워크시트의 ScrollArea 속성에 이름 정의나 셀 주소를 지정하면 그 영역 안에서만 스크롤됩니다. 빈 문자열을 지정하면 해제되고, EnableSelection 속성을 이용하면 모든 영역을 선택할 수 없게 만들 수도 있습니다.
- 설정: ActiveSheet.ScrollArea = "WorkArea" 또는 "B9:C19"
- 해제: ActiveSheet.ScrollArea = ""
- 선택 불가: EnableSelection = xlNoSelection + Protect (UserInterfaceOnly)
- 선택 제한 해제: EnableSelection = xlNoRestrictions
ScrollArea 속성으로 스크롤 영역 제한하기
예제 파일에서 '스크롤 영역 설정' 버튼을 클릭하면 포괄손익계산서의 '판매관리비' 영역(노란색) 내부에서만 스크롤되도록 설정합니다.
'스크롤 영역 설정' 버튼에 연결된 코드입니다.
Sub SetScrollArea()
ActiveSheet.ScrollArea = "WorkArea" ' B9:C19 영역에 미리 이름 정의해 둠
End Sub
WorkArea라는 영역에서만 스크롤되죠? 사전에 이름 정의하지 않고 셀 주소를 직접 지정할 수도 있습니다.
ActiveSheet.ScrollArea = "B9:C19"
스크롤 영역 설정을 해제하려면 다음과 같이 스크롤 영역을 지정하지 않으면 됩니다.
ActiveSheet.ScrollArea = ""
EnableSelection 속성으로 선택 못 하게 하기
EnableSelection 속성을 이용하면 워크시트의 모든 영역을 선택할 수 없도록 할 수 있습니다. 다음 코드를 실행하면 현재 워크시트의 모든 영역을 선택할 수 없게 됩니다.
Sub SetScrollArea2()
With ActiveSheet
.EnableSelection = xlNoSelection
.Protect contents:=True, userinterfaceonly:=True
End With
End Sub
이 설정을 해제하기 위해서는 다음 코드를 사용합니다.
ActiveSheet.EnableSelection = xlNoRestrictions
참고: 이미지에 대하여
이 글은 원래 네이버 포스트에 게재되었던 글로, 네이버 포스트 서비스 종료로 네이버 블로그로 옮기는 과정에서 원본 이미지가 소실되었습니다. 위 이미지는 본문 설명을 바탕으로 당시 화면 구성을 재구성한 예시 이미지이며, 실제 엑셀 화면과 세부 디자인(버전별 UI)은 다를 수 있습니다. 이미지 속 계정과목과 금액은 예시입니다.
정리 — 스크롤 영역과 선택 제한 설정
| 하려는 일 | 코드 |
|---|---|
| 이름 정의한 영역으로 스크롤 제한 | ActiveSheet.ScrollArea = "WorkArea" |
| 셀 주소로 스크롤 제한 | ActiveSheet.ScrollArea = "B9:C19" |
| 스크롤 제한 해제 | ActiveSheet.ScrollArea = "" |
| 모든 영역 선택 불가 | .EnableSelection = xlNoSelection + .Protect contents:=True, userinterfaceonly:=True |
| 선택 제한 해제 | ActiveSheet.EnableSelection = xlNoRestrictions |
자주 묻는 질문 (FAQ)
Q1. 워크시트의 특정한 영역에서만 셀 포인터가 움직이게 할 수 있나요?
워크시트 개체의 ScrollArea 속성을 사용하면 됩니다. 예를 들어 ActiveSheet.ScrollArea = "B9:C19"라고 지정하면 해당 영역 안에서만 스크롤됩니다.
Q2. 스크롤 영역 설정을 해제하려면 어떻게 하나요?
스크롤 영역을 지정하지 않으면 됩니다. ActiveSheet.ScrollArea = ""와 같이 빈 문자열을 지정하세요.
Q3. 워크시트의 모든 영역을 선택할 수 없게 하려면 어떻게 하나요?
EnableSelection 속성에 xlNoSelection을 지정하고 Protect 메서드로 워크시트를 보호합니다. 해제할 때는 ActiveSheet.EnableSelection = xlNoRestrictions를 실행합니다.
마치며
속성 하나만 지정해도 셀 포인터가 움직이는 범위를 정해 둘 수 있습니다. 입력 양식을 만들 때 요긴하게 써 보세요!
VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 사이트 정문 왼쪽에 있는 'VBA 강좌 - VBA 입문강좌'를 읽어보시면 이해가 빠릅니다.