이 페이지에서
구문
= HEX2FONTCOLOR ( 색상코드, 범위 )
인수구분
형식 설명
색상코드
필수
선택한 범위에 적용할 색상코드입니다.
6자리의 숫자코드인 HEX 코드로 입력합니다.
범위
필수
Range
글자 색상을 변경할 범위입니다.
마스터 코드
복사한 코드는 VBA 편집기(Alt + F11) 새 모듈에 붙여넣어 사용하세요'###############################################################
'오빠두엑셀 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 함수도 같은 모듈에 붙여넣어야 합니다.
대단히 감사합니다.
예를 들어 A1 열에 "딸기, 바나나" 가 있다면 "딸기"만 빨간색으로 바꾸고 싶어서요..ㅜ
다음에 기회가 된다면 관련 명령문도 차후 올려드리겠습니다.^^
강의 찾아서 우선 만들어보고 있을게요~^0^
앗 명령문에 오타가 있었습니다.^^;
에서 뒤에 & 를 지우고 다시 실행해보시겠어요? 잘 동작할겁니다 :)
감사합니다.
말씀해주신 내용은 불가능합니다.
rng.Font.Color 를 rng.Interior.Color 로 바꿔보세요.
감사합니다.
위의 '전체 명령문'에서 rng.Font.Color 를 rng.Interior.Color 로 변경하고, hex2fontcolor 명령문을 실행했는데,
셀 배경색이 바뀌지 않고, #value 값으로 오류가 발생합니다.
혹시 어떤게 원인인지 알 수 있을까요?
지금 테스트해보니 Function 으로는 배경색을 변경할 수 없네요..!^^;
Sub 명령문으로 따로 작성 후 실행하셔야 할 것 같습니다.
감사합니다.
- Sub 명령문은 아래쪽에 작성한 방식을 말씀하시는건가요?
- 셀 배경색을 변경하는 함수는 따로 없는 것으로 알고 있습니다. 그럼 사용자지정함수(Function)를 따로 만들어야하는 방법 밖에 없을까요?
답변 감사드립니다.배경색을 바꾸는 건 사용자지정함수로는 불가능하고 Sub 명령문으로만 실행할 수 있습니다. 사용자 함수로는 불가합니다!^^