sourcetip

RGB 색상을 가변적으로 저장하는 방법은 무엇입니까?

fileupload 2023. 4. 13. 21:07
반응형

RGB 색상을 가변적으로 저장하는 방법은 무엇입니까?

Excel VBA 프로젝트의 변수에 RGB 색상을 저장하여 서브 전체에서 다양한 셀/레인지의 배경색을 설정하려고 합니다.

색상을 변수별로 한 번 설정하고 싶기 때문에 처음부터 바꾸기로 결정하면 한 곳에서만 하면 됩니다.

Dim clrBlue As ColorFormat
clrBlue = RGB(0, 0, 256)

Range("a2").Interior.Color = clrBlue
Range("b3").Interior.Color = clrBlue

위의 코드를 사용하면 런타임 오류가 발생합니다.

개체 변수 또는 블록 변수가 설정되지 않음

다른 함수를 쓸 수 있습니다.SetBlue,SetRed,SetGreen각 색상을 적용하는데 지저분한 느낌이 듭니다.

내가 뭘 잘못하고 있는지 누가 제안해줄래?

RGBa를 반환하다Long, 따라서 선언해야 합니다.clrBlue~하듯이Long로서가 아니라ColorFormat.

Dim clrBlue As Long

clrBlue = RGB(0, 0, 255)

Application.union(Range("A2"), Range("B3")).Interior.Color = clrBlue

다른 사람이 말했듯이 RGB()는 Long을 반환하므로 ColorFormat 대신 Long을 사용해야 합니다.C#의 Color enum이 마음에 들어 VBA 모듈에서 흉내를 내기 시작했습니다.고유한 열거형을 만들어 프로젝트의 색상 값을 저장한 다음 색상을 사용하여 색상을 참조할 수 있습니다.파랑색.

또한 다른 색조의 파란색을 사용하기로 결정하면 색상을 쉽게 변경할 수 있습니다.열거형 및 색상을 사용한 모든 위치를 업데이트합니다.파란색이 업데이트됩니다.

예:

Public Enum Color
    Black = 0         'RGB(0, 0, 0)
    Blue = 14390640   'RGB(112, 149, 219)
    Gray = 11842740   'RGB(180, 180, 180)
    Red = 6118894     'RGB(238, 93, 93)
    White = 16777215  'RGB(255, 255, 255)
End Enum

저장할 RGB 값의 긴 값을 얻기 위해 Immediate 창에 값을 던져 출력을 복사하기만 하면 됩니다.

즉시 창에 다음을 입력합니다.

? RGB(112, 149, 219)

출력은 14390640이 됩니다.더 쉽게 값을 구할 수 있는 방법이 있을지도 몰라요.

나는 이것을 시도해 본 적이 없고 이전의 어떤 논평에도 이의를 제기하지 않는다.

원본 코드 샘플에는 clrBlue = RGB(0, 0, 256)가 있습니다.

RGB에서 허용되는 최대 수는 255입니다.그게 문제일 수도 있어요.

언급URL : https://stackoverflow.com/questions/25201173/how-to-store-rgb-colour-in-variable

반응형