• 최초 작성일: 2017-08-08
  • 최종 수정일: 2026-09-30
  • 조회수: 13 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: VBA 파워 코딩 236회 - 컬러 밴드 만들기

들어가기 전에

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

표에 한 행씩 걸러 색을 입히는 '컬러 밴드'는 표를 훨씬 읽기 편하게 만들어 줍니다. 조건부 서식으로도 만들 수 있지만, 이번에는 간단한 VBA 코드로 직접 만들어 보겠습니다.

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

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

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


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

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

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

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

컬러 밴드(Color Band) 코드로 만들기

핵심 요약: 컬러 밴드를 만드는 ColorBanding 프로시저

ColorBanding 프로시저는 Application.InputBox로 대상 영역을 선택받고, 이름 정의된 기준 셀의 색상을 홀수 행에만 입혀 컬러 밴드를 만듭니다.

  • 영역 선택: Application.InputBox(Type:=8)로 Range 선택
  • 색상 지정: CellColor로 이름 정의된 셀의 Interior.Color 사용
  • 밴드 적용: rngCell.Row Mod 2 = 1인 행에만 색 지정
  • 삭제: DelColorBand 프로시저로 MyTable 색상 일괄 제거

컬러 밴드, 코드로 만들기

컬러 밴드를 만드는 방법에는 여러 가지가 있습니다. 조건부 서식을 이용하는 방법을 다룬 적도 있는데, 오늘은 간단한 코딩으로 해결해 보겠습니다.

기준이 될 셀에 색을 지정하고 '컬러 밴드 설정' 버튼을 클릭하면, 아래 표에 지정한 색상과 같은 컬러 밴드가 한 행씩 걸러 생기도록 만들어 보겠습니다. 색상을 지정할 영역에는 미리 MyTable이라는 이름을, 기준 셀에는 CellColor라는 이름을 정의해 두었습니다.

ColorBanding 프로시저 작성하기

(1) 표준 모듈에 다음 코드를 입력합니다. Application.InputBox로 영역을 선택받고, Range("CellColor").Interior.Color로 기준 색상을 가져온 다음, For Each ~ Next 문으로 각 행을 돌면서 홀수 행에만 색을 입힙니다.

Sub ColorBanding()

    Dim rngTarget As Range
    Dim rngCell As Range
    Dim lngColor As Long
    Dim strTargetAddress As String
    On Error GoTo ET

    strTargetAddress = Range("MyTable").Address
    Set rngTarget = Application.InputBox("영역을 선택하세요", "영역 선택", Default:=strTargetAddress, Type:=8)
    lngColor = Range("CellColor").Interior.Color

    For Each rngCell In rngTarget.Rows
        If rngCell.Row Mod 2 = 1 Then
            rngCell.Interior.Color = lngColor
        Else
            rngCell.Interior.Color = xlNone
        End If
    Next rngCell

ET:
    If Err.Number <> 0 Then
        MsgBox Err.Description, , "에러 발생"
        Exit Sub
    End If

End Sub

Sub DelColorBand()
    Range("MyTable").Interior.Color = xlNone
End Sub

참고: 이름 정의 활용

코드에서 Range("MyTable"), Range("CellColor")처럼 셀 주소 대신 정의된 이름을 사용했습니다. 어떤 영역에 어떤 이름이 정의되어 있는지는 이름 상자를 통해 확인할 수 있습니다. 셀에 이름을 정의해 두고 코딩 시 활용하면 훨씬 편리합니다.

(2) 컬러 밴드를 지우고 싶다면 다음과 같이 간단한 프로시저 하나만 더 추가하면 됩니다.

Sub DelColorBand()
    Range("MyTable").Interior.Color = xlNone
End Sub

참고: 이미지에 대하여

이 글은 원래 네이버 포스트에 게재되었던 글로, 네이버 포스트 서비스 종료로 네이버 블로그로 옮기는 과정에서 원본 이미지가 소실되었습니다. 코드와 사용 방법은 원문 그대로이며, 실제 화면 구성은 원본 워크시트를 참고하시기 바랍니다.

간단하죠? 여러 형태로 응용이 가능합니다. On Error 문으로 사용자가 InputBox에서 '취소'를 누르는 경우까지 대비해 두었다는 점도 눈여겨보시기 바랍니다.

정리 — ColorBanding / DelColorBand 프로시저

프로시저 역할
ColorBanding 선택한 영역의 홀수 행에 지정한 색으로 컬러 밴드 적용
DelColorBand MyTable 영역의 컬러 밴드(배경색) 모두 제거
Application.InputBox Type:=8 옵션으로 셀 범위를 사용자로부터 선택받음

자주 묻는 질문 (FAQ)

Q1. 짝수 행에 색을 입히고 싶으면 어떻게 하나요?

코드의 If rngCell.Row Mod 2 = 1 부분을 If rngCell.Row Mod 2 = 0으로 바꾸면 짝수 행에 색이 입혀집니다.

Q2. InputBox에서 '취소' 버튼을 누르면 오류가 발생하나요?

On Error GoTo ET 구문으로 오류를 잡아 MsgBox로 안내한 뒤 Exit Sub로 안전하게 빠져나가도록 처리되어 있습니다.

Q3. MyTable, CellColor 이름은 어디서 확인하나요?

수식 입력줄 왼쪽의 이름 상자를 클릭하면 통합 문서에 정의된 이름 목록을 확인할 수 있습니다. 이름 상자에서 이름을 선택하면 해당 영역으로 바로 이동합니다.

마치며

표에 줄무늬 하나 넣는 것도 이렇게 코드로 만들어두면, 버튼 한 번으로 언제든 다시 쓸 수 있어 편합니다. 이름 정의와 InputBox를 함께 활용하는 감을 익혀 보세요!