• 최초 작성일: 2002-01-17
  • 최종 수정일: 2026-09-30
  • 조회수: 20 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 선택한 셀 색상 변경하기

들어가기 전에

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

게시판에 올라온 질문입니다.

엑셀을 사용하다가 마우스로 셀을 지정할 때 진한 검은색으로만 되어 혼돈됩니다.
마우스를 어떤 셀에 가져다 놓아도 셀 고유의 셀 색 말고 마우스가 가리키는 셀
테두리 색깔과 바탕색을 바꿀수 있는 지 알려주세요.
VBA로 하면 된다는데…

셀을 선택할 때 반전되는 색이 다른 색과 구분이 명확히 되지 않아 불편하다는 생각을 Exceller는 한번도 가져본 적이 없습니다만, 선택한 셀을 다른 색상으로 변경하는 것은 충분히 가능한 일입니다. 버튼을 눌러 Stage 시트로 이동한 다음 임의의 셀들을 클릭해 보세요.

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

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

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


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

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

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

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

선택한 셀 색상 변경하기

핵심 요약: 선택한 셀 강조하기

Worksheet_SelectionChange 이벤트에서 Static 변수 OldCell에 이전 셀을 저장해 두고 서식을 복원한 뒤 현재 셀에 색상을 지정하면 선택한 셀만 강조됩니다.

  • 1단계: 코드 창에서 Worksheet 오브젝트와 SelectionChange 이벤트를 선택합니다.
  • 2단계: Static Range 변수로 이전에 선택한 셀을 기억합니다.
  • 3단계: 이전 셀 서식을 되돌리고 현재 셀에 배경색과 글꼴을 지정합니다.

SelectionChange 이벤트로 선택한 셀 색상 바꾸기

셀을 클릭할 때마다 셀 색상이나 글자 모양이 변할 것입니다. 이것은 워크시트 오브젝트의 SelectionChange 이벤트를 사용하면 쉽게 구현할 수 있습니다.

(1) 워크시트 코드 창 열기

(1) VB Editor 상태에서 프로젝트 탐색기 이벤트를 삽입할 워크시트를 더블클릭 합니다.

(2) 이벤트 선택하기

(2) 코드 입력 창 우측 상단의 콤보 박스 중에서 Worksheet 오브젝트와 SelectionChange 이벤트를 선택합니다.

VB Editor 코드 창에서 Worksheet 오브젝트와 SelectionChange 이벤트를 선택하는 콤보 박스 화면
아이엑셀러

(3) 코드 작성하기

(3) 그러면 Worksheet_SelectionChange 이벤트 핸들러 프로시저가 생성되는데 여기에 아래와 같은 코드를 작성합니다.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static OldCell As Range
    On Error Resume Next
    '''여기서 OldCell 이라는 Range 오브젝트 변수를 선언할 때 Static, 즉 정적 변수로 선언해 준
    '''점에 유의하시기 바랍니다.
    '''왜 Static 변수로 선언해 주었는 지 확실하게 이해하시려면 이것을 Dim으로 선언한 다음
    '''다시 실행시켜 보시면 명확해 질 것입니다.

    If Not OldCell Is Nothing Then
        With OldCell
            .Interior.ColorIndex = xlNone
            .Font.Bold = False
            .Font.ColorIndex = 1
        End With
    End If

    With Target
        .Interior.ColorIndex = 3
        .Font.Bold = True
        .Font.ColorIndex = 2
    End With
    Set OldCell = Target
    '''그 밖의 나머지 구문에 대해서는 설명을 하고 말고 할 것도 없겠지요? ^^
    '''다만 위의 Set OldCell = Target라는 문장이 왜 필요한 지, 어떤 역할을 수행하는 지에
    '''대해서는 곰곰히 생각해 보시기 바랍니다.
End Sub

이 코드는 이전에 선택했던 셀의 배경색을 없애고 글꼴을 기본 상태로 되돌리므로, 시트에 원래 배경색이나 굵은 글꼴 서식이 있으면 함께 지워집니다. 서식이 있는 시트에 적용할 때는 이 점을 감안하여 사용하세요.

모든 시트에 적용하려면

만약 특정한 워크시트뿐만 아니라 모든 시트에 대해 위와 같은 작업을 수행하도록 하시려면 Workbook_SheetSelectionChange 이벤트를 이용하시면 되겠습니다.

마무리

오늘은 짧게 여기까지…

정리 — 선택 셀 강조 핵심

구분 사용한 코드 역할
이벤트 Worksheet_SelectionChange 셀 선택 시 자동 실행
이전 셀 기억 Static OldCell As Range 프로시저 종료 후에도 값 유지
서식 복원 .Interior.ColorIndex = xlNone 이전 셀 배경색 제거
현재 셀 강조 .Interior.ColorIndex = 3 빨간색 배경과 굵은 글꼴
전체 시트 적용 Workbook_SheetSelectionChange 모든 시트에 동일 적용

자주 묻는 질문 (FAQ)

Q1. 선택한 셀의 색을 바꾸려면 어떤 이벤트를 쓰나요?

워크시트의 SelectionChange 이벤트를 사용하면 셀을 선택할 때마다 코드를 실행할 수 있습니다.

Q2. 왜 OldCell을 Static으로 선언하나요?

Dim으로 선언하면 프로시저가 끝날 때 값이 사라져 이전 셀을 기억하지 못하므로 값이 유지되는 Static으로 선언합니다.

Q3. 모든 시트에 적용하려면 어떻게 하나요?

ThisWorkbook 모듈의 Workbook_SheetSelectionChange 이벤트를 사용합니다.

마치며

SelectionChange 이벤트와 Static 변수를 함께 쓰면 선택한 셀만 눈에 띄게 강조하는 기능을 간단히 만들 수 있습니다.