『VBA_Color値⇔RGB値』(VERISA)
こんにちは。
VBAでセル背景色のColor値をRGB値に直したいのですが、
どのようにしたらいいでしょうか?
< 使用 Excel:Excel2021、使用 OS:Windows10 >
青 = Int(Color値 / 65536) 緑 = Int((Color値 - 65536 * ColB) / 256) 赤 = Color値 - (65536 * ColB) - (256 * ColG)
(SAS) 2024/07/23(火) 16:50:49
訂正。 青 = Int(Color値 / 65536) 緑 = Int((Color値 - 65536 * 青) / 256) 赤 = Color値 - (65536 * 青) - (256 * 緑) (SAS) 2024/07/23(火) 16:52:03
With ActiveCell R = .Interior.Color And &HFF G = .Interior.Color \ &H100 And &HFF B = .Interior.Color \ &H10000 And &HFF End With Debug.Print R; G; B こういう感じでも (´・ω・`) 2024/07/23(火) 16:54:30
And とるより Mod の方がわかりやすいですか
With ActiveCell R = .Interior.Color Mod &H100 G = .Interior.Color \ &H100 Mod &H100 B = .Interior.Color \ &H10000 Mod &H100 End With Debug.Print R; G; B (´・ω・`) 2024/07/23(火) 16:59:23
お二方ともありがとうございます! 解決しました!!
>And とるより Mod の方がわかりやすいですか すみません、式の内容はさっぱりです。。 (VERISA) 2024/07/23(火) 17:02:28
&H100 は 256 の16進数表記です &H100 = 256 &H10000 = 65536
演算子 \ は整数除算 演算子 Mod は剰余 (割り算の余り) です こちらのサイトなども参考に http://officetanaka.net/excel/vba/graph/25.htm (´・ω・`) 2024/07/23(火) 17:20:12
別アプローチの案をもひとつ。^^; LSetステートメントで遠回りする手法です。
Private Type typeINT32 Value As Long End Type Private Type typeCOLORREF Red As Byte Green As Byte Blue As Byte NoData As Byte End Type
Sub test() Const COLOR1 = &HABCDEF Dim i32 As typeINT32, cRef As typeCOLORREF i32.Value = COLOR1 LSet cRef = i32 Debug.Print Hex(cRef.Blue); Hex(cRef.Green); Hex(cRef.Red) End Sub
(白茶) 2024/07/23(火) 19:24:52
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.