• 최초 작성일: 2002-05-23
  • 최종 수정일: 2026-09-30
  • 조회수: 7 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 배율 자동 조절하기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

"어떻게 하면 엑셀이나 VBA를 잘 할 수 있나요?"라는 질문을 자주 받습니다. 지극히 상식적인 답변은 "엑셀을 사랑하시라"는 것입니다. 사랑하면 알게 되고, 알면 보이며, 그때 보이는 것은 전과 같지 않다는 말처럼 하시는 일을 사랑하면 그 일도 여러분을 사랑하게 됩니다.

이번 시간에는 사용자가 지정한 영역을 화면 가득 채우는 방법을 알아봅니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

배율 자동 조절하기

핵심 요약: 영역에 맞춰 화면 배율 조절

영역을 선택하고 Window 오브젝트의 Zoom 속성을 True로 지정하면 선택 영역이 창에 꽉 차도록 배율이 자동으로 정해집니다.

  • 1단계: RefEdit 컨트롤로 영역을 지정하고 스크롤 바로 수동 배율을 조절합니다.
  • 2단계: 행과 열의 수를 비교하여 기준 방향을 정합니다.
  • 3단계: 해당 방향을 Resize로 선택하고 Zoom = True를 지정합니다.

Step 1: 결과 미리 보기

버튼을 누른 다음 마우스로 적당한 영역을 선택하면 화면 배율이 자동으로 조절되어 그 영역이 화면 가득 채워집니다. 어떻게 만들었는지 살펴보겠습니다.

Step 2: 유저폼 만들기

(1) VB Editor 상태에서 유저폼을 하나 삽입하고 그림과 같이 컨트롤을 그려 넣습니다. 척~ 보면 아시겠지만... 다섯 종류, 7개의 컨트롤이 사용되었습니다.

배율 자동 조절 유저폼: RefEdit 컨트롤, 스크롤 바, 확인/취소 버튼
아이엑셀러

Step 3: Initialize 이벤트

(2) 유저폼의 빈 공간을 더블 클릭하고 Initialize 이벤트를 선택한 다음 코드를 작성합니다.

Private Const strZoom As String = "현재 화면 배율은 "

Private Sub UserForm_Initialize()
    RefEdit1.Text = Selection.CurrentRegion.Address
    ' 현재 셀 포인터가 위치해 있는 셀 주변 영역의 주소를 RefEdit 컨트롤의 기본값으로 설정합니다.

    ActiveWindow.Zoom = 100
    lblZoom.Caption = strZoom & ActiveWindow.Zoom & "% 입니다"
    ' 현재 화면의 배율을 100으로 설정하고 lblZoom 레이블에 표시를 합니다.

    With scrZoom
    ' 아래 부분은 scrZoom 스크롤 바의 기본값을 세팅하는 과정입니다.

        .Min = 25
        .Max = 400
        .SmallChange = 1
        .LargeChange = 10
        .Value = 100
    End With
    RefEdit1.SetFocus
    ' 포커스를 RefEdit1 개체로 옮깁니다.

End Sub

RefEdit 컨트롤의 기본값을 셀 포인터가 있는 인접 영역의 주소로 설정하고, 화면 배율을 100으로 초기화하여 레이블에 표시합니다. 스크롤 바의 최솟값(25), 최댓값(400), 변화량, 기본값도 여기서 설정합니다.

Step 4: 스크롤 바 Change 이벤트

(3) 개체 선택 드롭다운 버튼과 이벤트 선택 드롭다운 버튼을 각각 클릭하여 scrZoom 오브젝트의 Change 이벤트를 선택하고 해당 코드를 입력합니다.

Private Sub scrZoom_Change()
' Change 이벤트, 즉 scrZoom 컨트롤의 좌/우 버튼 등을 클릭할 때마다 Window 오브젝트의 Zoom
' 속성을 이용하여 화면의 크기를 조절하고 lblZoom 레이블에 표시를 해 줍니다.

    With ActiveWindow
        .Zoom = scrZoom.Value
        lblZoom.Caption = strZoom & .Zoom & "% 입니다"
    End With
End Sub

스크롤 바의 좌우 버튼 등을 클릭할 때마다 Window 오브젝트의 Zoom 속성으로 화면 배율을 조절하고 레이블에 표시합니다.

Step 5: 확인 버튼 코드

(4) Shift + <F7> 키를 눌러 유저폼 상태로 돌아온 다음 '확인' 버튼을 더블 클릭합니다. 아래 부분이 오늘 강좌의 핵심입니다!

Private Sub cmdOK_Click()
    Dim rngTarget As Range
    Dim lngZoom As Long
    Dim blnRow As Boolean
    Dim lngRow As Long
    Dim intCol As Integer
    lngZoom = ActiveWindow.Zoom

    On Error Resume Next
    Set rngTarget = Range(RefEdit1.Text)
    On Error GoTo 0
    If rngTarget Is Nothing Then
    ' 만약 범위가 올바르지 않으면 RefEdit1 컨트롤로 포커스를 옮기고 프로시저를 종료합니다.
        MsgBox "범위를 다시 선택하세요!", , "www.iExceller.com"
        RefEdit1.SetFocus
        Exit Sub
    End If
    lngRow = rngTarget.Rows.Count
    intCol = rngTarget.Columns.Count

    blnRow = IIf(intCol > lngRow, False, True)
    ' 행의 수와 열의 수를 비교하여 어느 것을 기준으로 화면 배율을 조절할 것인지 결정합니다.
    ' 위의 문장은 원래,
    ' If intCol>lngRow Then
    '     blnRow=False
    ' Else
    '    blnRow=True
    ' End If
    ' 이렇게 써야 할 것을 한 줄로 축약해서 표현한 것입니다.

    ChangeZoomRate rngTarget, lngZoom, blnRow
    ' ChangeZoomRate라는 프로시저를 실행시킵니다. 이 때 세 가지 인수를 함께 건네줍니다.
    ' 세 가지 인수는 각각 셀 포인터가 있는 인접 영역 주소, 화면 배율, True(또는 False) 값 입니다.

End Sub

Step 6: 배율 조절 프로시저

(5) 이번에는 '삽입-모듈' 메뉴를 선택하여 모듈 시트를 한 장 삽입하고 코드를 작성합니다. 아래 부분이 오늘 강좌의 핵심입니다!

Sub ChangeZoomRate(ByVal rngX As Range, lngX As Long, blnRow As Boolean)
    Dim winWindow As Window
    Application.ScreenUpdating = False
    Application.Goto rngX(1, 1), True
    Set winWindow = ActiveWindow

    With rngX
        If blnRow Then
            .Resize(.Rows.Count, 1).Select
        Else
            .Resize(1, .Columns.Count).Select
        End If
        ' 행 방향 셀의 수가 많은지 열 방향 셀의 수가 많은지를 파악한 다음 Resize 메서드를 사용하여
        ' 해당 방향을 선택합니다.

    End With

    With winWindow
        .Zoom = True
        ' Window 오브젝트의 Zoom 속성을 True로 지정하면 현재 선택 영역을 창 크기에 맞도록
        ' 자동으로 맞추어 줍니다.

        .VisibleRange(1, 1).Select
    End With
    Application.ScreenUpdating = True
    Unload frmZoom
    MsgBox "선택 영역을 표시하기 위한 최적 배율은 " & ActiveWindow.Zoom & "% 입니다"
End Sub

영역의 행 수와 열 수를 비교하여 더 많은 쪽 방향으로 Resize 메서드를 사용해 선택하고, Window 오브젝트의 Zoom 속성을 True로 지정하면 현재 선택 영역을 창 크기에 맞게 자동으로 조절합니다. 그런 다음 보이는 범위의 첫 셀을 선택하여 마무리합니다.

Step 7: 취소 버튼 코드

(6) 유저폼 상태에서 '취소' 버튼을 더블 클릭한 다음 필요한 유저폼을 닫기 위한 프로시저를 작성합니다.

Private Sub cmdCancel_Click()
    Unload Me
End Sub

참고: 유저폼 이름은 frmZoom으로 지정하였고, RefEdit 컨트롤은 주소 형식의 텍스트를 입력하기 때문에 잘못된 주소가 입력될 수 있어 코드에서 범위 지정 오류를 확인하도록 하였습니다.

많이 응용해 하셔서 재미있는 것을 많이 만들어 보시기 바랍니다.

오늘은 여기까지…

정리 — 배율 자동 조절 핵심

구분 사용한 코드 역할
영역 입력 RefEdit1.Text 사용자가 지정한 영역 주소
수동 배율 scrZoom.Value, ActiveWindow.Zoom 스크롤 바로 배율 변경
방향 결정 IIf(intCol > lngRow, False, True) 행/열 기준 선택
자동 배율 ActiveWindow.Zoom = True 선택 영역에 맞춤
시작 위치 VisibleRange(1, 1).Select 보이는 첫 셀 선택

자주 묻는 질문 (FAQ)

Q1. Zoom 속성을 True로 지정하면 어떻게 되나요?

현재 선택된 영역이 창 크기에 맞도록 화면 배율이 자동으로 조절됩니다.

Q2. RefEdit 컨트롤은 무엇인가요?

사용자가 워크시트에서 마우스로 셀 영역을 선택하면 그 주소가 텍스트로 입력되는 유저폼 컨트롤입니다.

Q3. 행과 열 중 어느 방향을 기준으로 하나요?

영역의 행 수와 열 수를 비교해 더 많은 쪽 방향을 Resize로 선택한 뒤 배율을 맞춥니다.

마치며

Window.Zoom = True 한 줄이면 사용자가 지정한 영역에 맞는 최적 배율이 자동으로 계산됩니다.