메뉴
실무 위키VBA 코드HEX2FONTCOLOR

HEX2FONTCOLOR

Function

색상 코드(HEX)로 지정한 범위의 글자 색을 변경하는 VBA 사용자 지정 함수입니다.

HEX2FONTCOLOR 코드 미리보기
구문 = HEX2FONTCOLOR ( 색상코드, 범위 )
인수구분 형식 설명
색상코드 필수
선택한 범위에 적용할 색상코드입니다.
6자리의 숫자코드인 HEX 코드로 입력합니다.
범위 필수 Range
글자 색상을 변경할 범위입니다.

마스터 코드

복사한 코드는 VBA 편집기(Alt + F11) 새 모듈에 붙여넣어 사용하세요
Module1 · HEX2FONTCOLOR
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'■ HEX2FONTCOLOR 함수
'■ 지정한 HEX CODE 값으로 범위의 글자 또는 배경색상을 변경합니다.
'■ 인수 설명
'_____________sHex : 헥스코드(컬러코드)를 받아올 범위 또는 텍스트입니다.
'_____________rng : 받아온 컬러코드로 글꼴 색상을 변환할 대상 범위입니다.
'###############################################################
Function HEX2FONTCOLOR(sHex, rng As Range) As String
Dim ir As Long: Dim ib As Long: Dim ig As Long
sHex = CStr(cvRng(sHex))
sHex = Replace(sHex, "#", "")
sHex = Right("000000" & sHex, 6)
ir = Val("&H" & Left(sHex, 2))
ig = Val("&H" & Mid(sHex, 3, 2))
ib = Val("&H" & Right(sHex, 2))
rng.Font.Color = RGB(ir, ig, ib)
HEX2FONTCOLOR = rng.Address(0, 0) & " = (" & ir & "," & ig & "," & ib & ")"
End Function
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'■ cvRng 함수
'■ 사용자지정함수에서 범위로 인수를 받을 시 사용합니다. 만약 인수가 범위로 입력되었을 경우, 범위에 입력된 값을 반환합니다.
'■ 인수 설명
'_____________TargetRng : 값을 반환할 범위 또는 그외 값입니다.
'###############################################################
Function cvRng(TargetRng)
If TypeName(TargetRng) = "Range" Then
cvRng = TargetRng.Value
Else
cvRng = TargetRng
End If
End Function

활용 예제

IF 함수와 조합해 조건을 만족할 때 글자 색 변경하기
=IF(SUM(A1:A5)>=20,HEX2FONTCOLOR("#FF0000",A1:A5))
'// 합계가 20 이상일 경우 글자 색을 변경합니다.

안내사항

사용자 지정 함수이므로 실행 후 이전 단계로 돌아가기(실행 취소)가 불가능합니다.
글자 색 변경만 지원하므로 배경 색을 변경하려면 별도의 VBA 매크로를 작성해야 합니다.
코드에 함께 들어 있는 cvRng 함수도 같은 모듈에 붙여넣어야 합니다.
댓글 20
5 (9개 평가)
레드불
레드불 2020.03.29 18:40
너무 감사합니다!
레드불
레드불 2020.03.29 18:55
조건부서식으로 힘들게 작업했는데 간편한 방법이 있었네요.
대단히 감사합니다.
굴레악
굴레악 2020.07.14 13:11
되돌리지 못할 수 있으니 저장과 백업에 주의해서 사용하면 유용하겠네요.
제로콜라
제로콜라 2021.02.09 18:00
한 셀에 있는 텍스트 중, 일부만 글자색 변경할 수 있는 방법은 없을까요?
예를 들어 A1 열에 "딸기, 바나나" 가 있다면 "딸기"만 빨간색으로 바꾸고 싶어서요..ㅜ
오빠두엑셀
오빠두엑셀 작성자 2021.02.10 15:59
VBA를 사용하면 가능합니다.
다음에 기회가 된다면 관련 명령문도 차후 올려드리겠습니다.^^
제로콜라
제로콜라 2021.02.18 13:28
가능하다는 말씀에 속이 뻥 뚫려요!
강의 찾아서 우선 만들어보고 있을게요~^0^
혠이
혠이 2023.02.07 18:21
혹시 이 관련 명령문 에 관한 강의 가 올라가 있는게 있을까요?!
우웅123
우웅123 2022.01.18 11:51
위의 코드 넣고 실행시 컴파일 오류입니다: 구문 오류입니다. 라는 멘트가 뜨는데 무슨문제일까요? rng.Font.Color = RGB(ir, ig, ib) & 가 붉은색으로 나옵니다.
오빠두엑셀
오빠두엑셀 작성자 2022.01.24 18:36
우웅123님 안녕하세요?
앗 명령문에 오타가 있었습니다.^^;
rng.Font.Color = RGB(ir, ig, ib) &
에서 뒤에 & 를 지우고 다시 실행해보시겠어요? 잘 동작할겁니다 :)
감사합니다.
까탈이
까탈이 2022.06.08 18:48
right을 이용해서 특정 글자수 이후의 글자들만 색상 변경가능한 조건부서식도 가능한가요?
오빠두엑셀
오빠두엑셀 작성자 2022.06.09 14:58
까탈이님 안녕하세요.
말씀해주신 내용은 불가능합니다.
llsssll
llsssll 2023.02.18 13:14
만약 글자색이아닌 배경색변경을 원하면 코드를 어떻게 고쳐야할까요?ㅠ
오빠두엑셀
오빠두엑셀 작성자 2023.02.19 21:08
안녕하세요.
rng.Font.Color 를 rng.Interior.Color 로 바꿔보세요.
감사합니다.
woo
woo 2023.03.05 00:16
안녕하세요.
위의 '전체 명령문'에서 rng.Font.Color 를 rng.Interior.Color 로 변경하고, hex2fontcolor 명령문을 실행했는데,
셀 배경색이 바뀌지 않고, #value 값으로 오류가 발생합니다.
혹시 어떤게 원인인지 알 수 있을까요?
오빠두엑셀
오빠두엑셀 작성자 2023.03.05 02:27
안녕하세요.
지금 테스트해보니 Function 으로는 배경색을 변경할 수 없네요..!^^;
Sub 명령문으로 따로 작성 후 실행하셔야 할 것 같습니다.
감사합니다.
woo
woo 2023.03.05 10:11
안녕하세요, 그럼 질문 몇 가지 더 드립니다.
  1. Sub 명령문은 아래쪽에 작성한 방식을 말씀하시는건가요?
  2. 셀 배경색을 변경하는 함수는 따로 없는 것으로 알고 있습니다. 그럼 사용자지정함수(Function)를 따로 만들어야하는 방법 밖에 없을까요?
답변 감사드립니다.
오빠두엑셀
오빠두엑셀 작성자 2023.03.05 16:48
Function은 함수(결과값 반환)형태로 동작하고, Sub은 프로시져로 특정 동작을 실행합니다.
배경색을 바꾸는 건 사용자지정함수로는 불가능하고 Sub 명령문으로만 실행할 수 있습니다. 사용자 함수로는 불가합니다!^^
woo
woo 2023.03.08 14:38
감사합니다!
강민준🤗
강민준🤗 2024.08.11 12:28
좋은 자료 감사합니다.🙇‍♂️
plusn****
plusn**** 2025.01.22 10:32
감사합니다. 셀색상을 변경 할려면 어떻게 수정 해야 할까요?.. rng.Font.Color = ... 를 rng.Interior.Color =... 만 바꿔서 되지 않는군요.
스크랩 완료