- 최초 작성일: 2002-06-27
- 최종 수정일: 2026-09-30
- 조회수: 15 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 엑셀에서 표현할 수 있는 색상 수
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
워크시트 상에서 표현할 수 있는 색상은 몇 가지나 될까요?
엑셀에서 표현할 수 있는 색상 수
핵심 요약: 엑셀의 색상 표현
RGB 컬러는 이론상 16,777,216가지 색을 만들 수 있지만 셀의 배경색은 56가지 대표 색으로만 표시되고, TextBox BackColor는 RGB 값을 그대로 표시합니다.
- 1단계: RGB 컬러는 빛의 3원색을 0~255의 256단계로 조합합니다.
- 2단계: 셀 배경색(Interior.ColorIndex)은 56가지 색만 표현합니다.
- 3단계: TextBox의 BackColor는 RGB 함수 값을 그대로 표현합니다.
Step 1: 엑셀에서 표현할 수 있는 색상은 몇 가지?
컴퓨터에서 색상을 표현하는 방법은 여러 가지가 있습니다.
PC 상에서 주로 사용하는 컬러 시스템은 RGB 컬러, CMYK 컬러, HSB 컬러, Lab 컬러 등이 있으며 이 중에서 엑셀은 RGB 컬러를 사용하여 색상을 표현할 수 있습니다.
빛은 무수히 많은 수의 가시분광(Visible Spectrum)으로 이루어져 있는데 RGB 컬러는 가시분광의 수많은 색상들 중에서 인간이 구분할 수 있는 R(Red), G(Green), B(Blue)를 혼합해 수많은 색상을 만들어내는 방식의 컬러 시스템입니다. 빨강, 녹색, 파랑 이 세가지 색은 빛의 3원색입니다.
RGB 컬러에는 검정색이 없으며 빛의 밝기를 이용하여 검정색을 표현합니다. 각 빛의 밝기는 0~255까지 256단계로 표현할 수 있습니다. 따라서 RGB 컬러에서 이론상 표현할 수 있는 최대 색상수는 16,777,216 가지입니다(256*256*256). 많이 낯이 익은 숫자이지요? 어디서 보았을까요.? 그렇습니다! 엑셀의 워크시트에 들어있는 셀의 수가 바로 16,777,216 개 였었지요.
Step 2: 셀에서는 56가지, TextBox에서는 수백만 가지
확인을 해 보아야겠지요? 아래 버튼을 눌러 보세요.
어라? 뭐가 이래… 16백만 가지의 색상을 표현할 수 있다고 해 놓고 실제로는 56가지 색상밖에 표현이 안되어 있지요? 그렇다면 Exceller가 거짓말을 했다는 말인가?
워크시트에 있는 셀 상에서 배경색으로 표현할 수 있는 색상수는 그렇게 많지가 않습니다. 즉 56가지 색상밖에 표현이 안되는 것이지요. RGB 함수의 인수 값을 아무리 섬세하게 준다고 해도 실제 표현이 되는 것은 대표성을 띈 56가지 색밖에 표현이 안됩니다.
그렇다면 56가지 대표 색상을 제외한 나머지 색은 사용할 수가 없는, 그림의 떡이란 말인가? 그렇지는 않겠지요? 다시 아래 버튼을 클릭한 다음 START 버튼을 눌러 보세요.
RGB 함수의 인수가 차례로 순환하면서 다양한 색상이 표현되지요? 만약 중간에 STOP 버튼을 눌러 종료를 하신 경우에는 VB Editor 상태에서 닫기 버튼을 한번 눌러 주어야 다음 작업을 진행할 수 있습니다.
왜 워크시트의 셀에서는 56가지 색상밖에 나타나지 않는데 TextBox에서는 수많은 색상이 표현이 되는가?
그것은… 그렇게 만들어졌기 때문이랍니다. 좀더 기술적(?)으로 풀어 설명하면, Range 오브젝트의 Interior 오브젝트의 ColorIndex 속성이 받아주는 것과 TextBox 컨트롤의 BackColor 속성이 받아주는 것이 서로 틀리기 때문인 것입니다. 왜 그렇게 되었냐 하면… 역시 그렇게 만들어졌기 때문입니다.
Step 3: 코드 살펴보기
코드를 보도록 하지요.
Private Sub cmdStart_Click()
Dim intR As Integer
Dim intG As Integer
Dim intB As Integer
Dim lngCount As Long
' 세 개의 TextBox에 각각 접근하여 R, G, B 계열의 색상 변화를 시각적으로 보여줍니다.
For intR = 0 To 255
TextBox1.BackColor = RGB(intR, 0, 0)
Label1.Caption = "RGB(" & intR & "," & 0 & "," & 0 & ")"
For lngCount = 0 To 100000: Next lngCount
DoEvents
Next intR
For intG = 0 To 255
TextBox2.BackColor = RGB(0, intG, 0)
Label2.Caption = "RGB(" & 0 & "," & intG & "," & 0 & ")"
For lngCount = 0 To 100000: Next lngCount
DoEvents
Next intG
For intB = 0 To 255
TextBox3.BackColor = RGB(0, 0, intB)
Label3.Caption = "RGB(" & 0 & "," & 0 & "," & intB & ")"
For lngCount = 0 To 100000: Next lngCount
DoEvents
Next intB
For intR = 0 To 255
' RGB 함수의 인수가 3가지 이므로 3개의 변수를 준비하였다가 차례로 순환을 시킵니다.
For intG = 0 To 255
For intB = 0 To 255
TextBox1.BackColor = RGB(intR, intG, intB)
' RGB 함수의 BackColor 속성값으로 intR, intG, intB 값을 차례로 대입합니다.
' RGB(0,0,0)이면 검정색이고 RGB(255,255,255)이면 백색이 됩니다.
' 대개의 경우(Exceller의 경험상) Range 오브젝트의 Interior 오브젝트의
' ColorIndex 속성으로 허용되는 56가지 색만으로도 충분합니다.
Label1.Caption = "RGB(" & intR & "," & intG & "," & intB & ")"
lngCount = lngCount + 1
DoEvents
' DoEvents를 사용하여 유저폼을 일시적으로 닫을 수는 있지만 아직 프로시저가
' 완전히 종료되지는 않은 상태입니다. 그래서 위의 그림에서와 같이 VB Editor로
' 가서 종료 버튼을 다시 한번 눌러 주는 것입니다.
Next intB
Next intG
Next intR
End Sub
먼저 R, G, B 각각의 값을 0에서 255까지 바꿔 가며 세 개의 TextBox 배경색이 어떻게 변하는지 보여 주고, 이어서 RGB 함수의 세 인수를 중첩 순환문으로 차례로 바꿔 가며 TextBox1의 BackColor 속성에 대입합니다. RGB(0,0,0)이면 검정색이고 RGB(255,255,255)이면 흰색이 됩니다. 대개의 경우 Range 개체의 Interior.ColorIndex 속성으로 허용되는 56가지 색만으로도 충분합니다.
DoEvents를 사용하면 유저폼을 닫을 수는 있지만 프로시저가 완전히 종료되지는 않은 상태입니다. 실행 도중 STOP 버튼으로 종료했다면 VB Editor에서 종료 버튼을 한 번 더 눌러 주어야 합니다.
오늘은 여기까지…
정리 — 엑셀 색상 표현 정리
| 구분 | 사용한 코드 | 역할 |
|---|---|---|
| RGB 최대 색상수 | 256 × 256 × 256 | 16,777,216가지 |
| 셀 배경색 | Range.Interior.ColorIndex | 56가지 색상 |
| 컨트롤 배경색 | TextBox.BackColor = RGB(r, g, b) | RGB 값 그대로 표현 |
| 화면 갱신 | DoEvents | 반복 중 화면 표시 유지 |
| 색 조합 | RGB(0,0,0) / RGB(255,255,255) | 검정 / 흰색 |
자주 묻는 질문 (FAQ)
Q1. RGB 컬러로 몇 가지 색을 표현할 수 있나요?
빨강, 초록, 파랑을 각각 0~255의 256단계로 조합하므로 256×256×256 = 16,777,216가지입니다.
Q2. 왜 셀에는 56가지 색만 표시되나요?
Range.Interior.ColorIndex 속성이 받아 주는 색이 56가지이기 때문입니다. RGB 값을 지정해도 가장 가까운 대표 색으로 표시됩니다.
Q3. 더 많은 색을 표현하려면 어떻게 하나요?
TextBox와 같은 컨트롤의 BackColor 속성에는 RGB 함수 값을 그대로 지정할 수 있어 수많은 색을 표현할 수 있습니다.
마치며
셀에서는 대개 56가지 색만으로도 충분합니다. 이 차이를 알아 두면 색상 관련 코드를 작성할 때 오해를 줄일 수 있습니다.