VBA에서 글꼴 색상 설정
문제
셀의 글꼴을 특정 RGB 값으로 설정하고 싶습니다.
내가 사용하는 경우
ActiveCell.Color = RGB(255,255,0)
나는 노란색을 얻지 만 더 이국적인 RGB 값을 사용하면 다음과 같이 사용합니다.
ActiveCell.Color = RGB(178, 150, 109)
난 그냥 회색으로 돌아갑니다.
RGB 값 만 사용할 수 없습니까? 그리고 해결 방법을 알고 있습니까?
감사.
해결책
Excel은 색상 팔레트의 색상 만 사용합니다. RGB 값을 사용하여 셀을 설정하면 가장 가까운 일치 인 팔레트에서 셀을 선택합니다. 색상으로 팔레트를 업데이트 한 다음 색상을 선택하면 작동합니다.
이렇게하면 현재 팔레트에 무엇이 있는지 볼 수 있습니다.
Public Sub checkPalette()
Dim i As Integer, iRed As Integer, iGreen As Integer, iBlue As Integer
Dim lcolor As Long
For i = 1 To 56
lcolor = ActiveWorkbook.Colors(i)
iRed = lcolor Mod &H100 'get red component
lcolor = lcolor \ &H100 'divide
iGreen = lcolor Mod &H100 'get green component
lcolor = lcolor \ &H100 'divide
iBlue = lcolor Mod &H100 'get blue component
Debug.Print "Palette " & i & ": R=" & iRed & " B=" & iBlue & " G=" & iGreen
Next i
End Sub
이렇게하면 팔레트를 설정할 수 있습니다
Public Sub setPalette(palIdx As Integer, r As Integer, g As Integer, b As Integer)
ActiveWorkbook.Colors(palIdx) = RGB(r, g, b)
End Sub
다른 팁
빠른 팁 : Excel 팔레트에는 거의 사용되지 않는 두 개의 색상이 있으며 다른 사람들의 시트에 대한 눈에 띄는 변경없이 일반적으로 사용자 정의 값으로 설정할 수 있습니다.
다음은 기본값보다 훨씬 덜 공격적인 합리적인 '소프트 톤'색상 세트를 만드는 코드입니다.
Public Sub SetPalePalette (옵션 WBK AS Excel.Workbook) '이 서브 루틴은 컨트롤, 제목 및 대화에 사용할 수있는 창백한 톤의 사용자 정의 팔레트를 만듭니다.'
' **이 코드는 공개 도메인에 있습니다 **'Nigel Heffernan http://excellerando.blogspot.com
'Excel Color Palette에는 거의 사용되지 않는 두 개의 숨겨진 행이 있습니다.
'기존 화면 업데이트를 캡처하는 코드, 필요한 경우'일시적으로 업데이트를 일시적으로 일시 중단하는 동안이 절차는 화면에 자극적 인 플리커를 생성하고 필요한 경우 종료에서 화면 업데이트를 복원합니다.
부울처럼 희미한 bscreenupdating
bscreenupdating = application.screenupdating
if bscreenupdating = true the application.screenupdating = false end if
'Application.screenUpdating <> bscreenupdating the then'application.screenupdating = bscreenupdating 'end if
wbk가 아무것도 없다면 WBK = thisworkbook END IF를 설정합니다.
WBK와 함께
.Colors(17) = &HFFFFD0 ' pale cyan .Colors(18) = &HD8FFD8 ' pale green. .Colors(19) = &HD0FFFF ' pale yellow .Colors(20) = &HC8E8FF ' pale orange .Colors(21) = &HDBDBFF ' pale pink .Colors(22) = &HFFE0FF ' pale magenta .Colors(23) = &HFFE8E8 ' lavender .Colors(24) = &HFFF0F0 ' paler lavender
끝납니다
If application.screenupdating <> bscreenupdating the application.screenupdating = bscreenupdating end if
종료 서브
Public sub setgreypalette () '이 서브 루틴은 컨트롤, 제목 및 대화에 사용할 수있는 greyshades의 사용자 정의 팔레트를 만듭니다.
' **이 코드는 공개 도메인에 있습니다 **'Nigel Heffernan http://excellerando.blogspot.com
'Excel Color Palette에는 거의 사용되지 않는 두 개의 숨겨진 행이 있습니다.
'기존 화면 업데이트를 캡처하는 코드, 필요한 경우'일시적으로 업데이트를 일시적으로 일시 중단하는 동안이 절차가 화면에 자극적 인 플리커를 생성하는 동안 ... 종료에서 화면 업데이트를 복원해야합니다!
부울처럼 희미한 bscreenupdating
bscreenupdating = application.screenupdating
if bscreenupdating = true the application.screenupdating = false end if
'Application.screenUpdating <> bscreenupdating the then'application.screenupdating = bscreenupdating 'end if
이 작업 책 .colors (25) = & hf0f0f0 .colors (26) = & he8e8e8 .colors (27) = & he0e0e0 .colors (28) = & hd8d8d8 .colors (29) = & hd0d0 .colors (30) = & hc8c0c0c0c0c0c0c0c0c0c0c0c0c0c0 이것은 메인 팔레트의 일반 25% 회색입니다 .Colors (31) = & HB8B8B8 '간격이 더 넓어지고 있음을 참고하십시오. 선형 스케일 끝으로 인식됩니다
'Excel 기본 팔레트의 오른쪽 열은 다음 회색을 지정합니다.
'색상 (56) = & H333333'색상 (16) = & H808080 '색상 (48) = & H969696'색상 (15) = & HC0C0C0 '기본 '25% 회색'
'이것은'갭 '을 개선하고 색상을 쉽게 구별 할 수 있도록 수정해야합니다.
이 작업 책.
If application.screenupdating <> bscreenupdating the application.screenupdating = bscreenupdating end if
종료 서브
각 통합 문서의 Open () 및 BeforeClose () 이벤트에 대해 또는 각 워크 시트의 활성화 및 비활성화 이벤트에 대해 'CaptureColors'및 'ReinStateColors'기능을 작성하도록 선택할 수도 있습니다.
나는 3D 차트의 '열'색상 그라디언트를 생성하는 어딘가에 코드가 놓여있어 '콜드'파란색에서 '핫'레드까지 32 단계로 진행됩니다. 이것은 생각보다 어렵다 : 인간의 시각 시스템에 의해 '동일한 간격'으로 인식되는 색상의 기울기 (로그 규모의 강도로 실행되며 빨간색, 녹색 및 파란색에 대한 비선형 가중치가 '강한'색상으로 비선형 가중치가 있습니다. ) 구조에 시간이 걸리면 VBA를 사용하여 지정된 순서대로 지정한 색상을 사용하여 MS 차트를 강요해야합니다.
Sub color()
bj = CStr(Hex(ActiveCell.Interior.Color))
If Len(bj) < 6 Then
Do Until Len(bj) = 6
bj = "0" & bj
Loop
End If
R = CLng("&H" & Right(bj, 2))
bj = Left(bj, Len(bj) - 2)
G = CLng("&H" & Right(bj, 2))
bj = Left(bj, Len(bj) - 2)
B = CLng("&H" & bj)
End Sub
답과 의견에 감사드립니다.
내 클라이언트가 다른 플러그인을 Excel에 설치하여 색상 팔레트를 조작했기 때문에 실제로 큰 어려움을 겪었습니다.
나는 팔레트에서 몇 가지 색상을 교체 한 다음 특정 ColorIndex를 내 요소에 서명했지만 소년은 예쁘지 않습니다.