엑셀 함수로 숫자 계산하고, 텍스트 바꾸고, 날짜 계산하는 건 가능한데, 셀 색상을 바꾸는 함수는 없죠? 엑셀에서 셀 색상 함수를 사용해야 하는 경우가 간혹 있어서 찾아보니 없어서 VBA로 만들어봤습니다. 생각보다 쉽게 만들 수 있고 코드까지 직접 만들었으니 참고하시면 바로 쓰실 수 있습니다. 아래에 VBA가 적용된 .xlsm 파일 첨부했으니 필요하시면 사용하셔도 됩니다.
아래 글에서 VBA를 통해 직접 셀 색상 변경 함수를 만드는 방법을 소개해드릴게요.
엑셀 셀 색상 변경 함수 VBA로 만들기
엑셀에는 셀 배경색을 채울 수 있는 함수는 없습니다. 그래서 이 문제를 해결할 수 있는 방법이 바로 VBA를 이용한 사용자 정의 함수를 만드는 건데요, 엑셀에서는 VBA를 활용해서 자신만의 함수나 이벤트를 만들 수 있어요.
이번에 소개할 방법은 CellColor라는 함수를 직접 만들어서, 셀에 =CellColor("완료", 0, 255, 0)
처럼 입력하면, 이 수식을 입력한 셀의 배경색이 바뀌도록 만들었습니다.
셀 색상 변경 CellColor 함수 - VBA 사용법
아래는 VBA에 입력할 전체 코드입니다. CellColor 라는 함수는 아래 순서를 따라 작업하시면 만들 수 있습니다. (함수명도 사용자가 직접 만들 수 있어요.)
1단계: 개발 도구 탭 활성화하기
만약 개발 도구 탭이 없으면 활성화해주세요.
- 엑셀 상단 메뉴에서 [파일] → [옵션] 클릭
- 왼쪽 메뉴에서 [리본 사용자 지정] 선택
- 오른쪽에서 "개발 도구" 체크박스에 체크
- 확인 누르면 상단 탭에 [개발 도구] 메뉴 생김
2단계: VBA 편집기 열기
- 상단 메뉴에서 [개발 도구] → [Visual Basic] 클릭
또는 단축키 [Alt + F11] 누르기 - 왼쪽 탐색기에서 VBAProject 구조 확인: Shee1, 현재 통합 문서 등 표시됨
3단계: 코드 넣는 위치
일반 모듈(Module)에 함수 넣기
- 상단 메뉴에서 [삽입] → [모듈] 클릭
- 생성된 [Module1]에 아래 코드 붙여넣기:
Function CellColor(displayText As String, red As Long, green As Long, blue As Long) As String
CellColor = displayText
End Function
현재 통합 문서에 이벤트 코드 넣기
- 왼쪽 탐색기에서 현재 통합 문서 더블 클릭
- 열리는 창에 아래 코드 붙여넣기:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim c As Range
For Each c In Sh.UsedRange
If c.HasFormula Then
If InStr(c.Formula, "CellColor") > 0 Then
Dim r As Long, g As Long, b As Long
Dim args As Variant
args = GetRGBArgsFromFormula(c.Formula)
If Not IsEmpty(args) Then
r = args(0)
g = args(1)
b = args(2)
On Error Resume Next
c.Interior.Color = RGB(r, g, b)
On Error GoTo 0
End If
End If
End If
Next c
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c As Range
For Each c In Target
If c.HasFormula = False Then
c.Interior.ColorIndex = xlNone
End If
Next c
End Sub
Private Function GetRGBArgsFromFormula(fx As String) As Variant
Dim openPos As Long, closePos As Long, rawArgs As String
Dim splitArgs() As String, rgbVals(2) As Long
openPos = InStr(fx, "(")
closePos = InStrRev(fx, ")")
If openPos > 0 And closePos > openPos Then
rawArgs = Mid(fx, openPos + 1, closePos - openPos - 1)
splitArgs = Split(rawArgs, ",")
If UBound(splitArgs) = 3 Then
rgbVals(0) = Val(Trim(splitArgs(1)))
rgbVals(1) = Val(Trim(splitArgs(2)))
rgbVals(2) = Val(Trim(splitArgs(3)))
GetRGBArgsFromFormula = rgbVals
End If
End If
End Function
4단계: 저장 시 주의! - .xlsm 파일이 아니면 VBA가 적용 안되거나 오류가 생길 수 있습니다.
- [파일] → [다른 이름으로 저장] 선택
- 파일 형식을 Excel 매크로 사용 통합 문서 (*.xlsm)로 지정
- 저장 후 다시 열 때 매크로 사용 여부 '예'로 허용해야 작동됨
VBA 사용 예시
이제 VBA 코드를 입력했다면 이제는 함수처럼 사용할 차례입니다. 아래처럼 셀에 수식을 입력해보세요:
CellColor 함수를 만들어서 텍스트를 넣고, 내가 원하는 색상을 RGB 값으로 넣어서 셀 배경색을 채우는 방법입니다.
=CellColor("완료", 0, 255, 0) ' 초록색
=CellColor("보류", 255, 255, 0) ' 노란색
=CellColor("거절", 255, 0, 0) ' 빨간색
이 수식들은 VBA로 만든 함수로 셀 배경색을 지정된 RGB 값으로 자동 변경해줍니다..
게다가 일반 셀에 입력된 함수를 지우거나 변경하면 다시 색상도 자동으로 적용됩니다.
▼ 엑셀 VBA 코드가 적용된 예시 파일
이번 글에서 소개한 방법처럼 직접 VBA 함수를 만들어두면,
처음엔 조금 낯설 수 있지만, 한 번 적용해보면 나쁘지 않을 겁니다. VBA 사용법도 익혀두면 다른 함수를 사용할 때도 코드만 적용하면 되니 간편하게 쓸 수 있을 거에요.
엑셀에서 필요한 기능이 없다면 결국 직접 만드는 게 가장 빠를 때도 있는 것 같습니다.
'사무 전산 정보 > Excel 엑셀' 카테고리의 다른 글
엑셀에서 글꼴 글자 색상 바로 바꾸는 단축키 (엑셀 글자색 단축키 정리) (0) | 2025.06.10 |
---|---|
엑셀 주말 색깔 표시, 자동으로 색상 변경하기 (조건부서식 + WEEKDAY 함수) (1) | 2025.06.05 |
엑셀에서 수식 값만 복사해서 붙여넣기, 엑셀 값만 붙여넣기 단축키 (1) | 2025.05.29 |
엑셀에서 방향키 이동 안됨 문제 해결 방법, 엑셀 방향키 고정 해제 (0) | 2025.05.27 |
마우스 휠이 셀 한 칸으로 움직일 때, 엑셀 스크롤 셀 단위 해제 / 변경 방법 (0) | 2025.05.22 |
댓글