Sub rgb_split()
Const num As Long = 15773696
Dim iR As Long, iB As Long, iG As Long
Dim amari As Long
amari = num
iG = amari \ 256 ^ 2
amari = amari Mod 256 ^ 2
iB = amari \ 256 ^ 1
amari = amari Mod 256 ^ 1
iR = amari \ 256 ^ 0
amari = amari Mod 256 ^ 0
Debug.Print iR
Debug.Print iB
Debug.Print iG
Debug.Print "rgbに直すと、 RGB(" & iR & ", " & iB & ", " & iG & ")ですね!"
End Sub
唐沢俊孝さんの投稿
(投稿ID: 1530)
私の今のエクセルのバージョンは2010であり、自動記録でセルの背景色を指定すると
colorIndexではなく、以下のようなcolorでかなりの桁数の数字になったり、colorで数字が表示されなかったりで
煩わしいコードになっています。
ところがフォローアップ20の動画で、カラーピッカーのマクロの話が出た時は有りがたかったです!
colorIndexは57種類ですがシンプルで書きやすいので、活用しています。
colorIndexの0は色無しですが、実際マクロで書くとエラーになります。
調べたらcolorIndex=xlNone で色無しになることを学びました!
仕事ではそれほど色を多種多様で使用する機会はないので、これで十分です。
お陰でこのマクロ、for nextでもdo loopでも書けるようになりなりました。
小川 慶一さんのコメント
(コメントID: 2775)
.Color の値は、 RGB 関数の戻り値としても表現できます。
赤なら .Color = RGB(255, 0, 0) 、緑なら、 .Color = RGB(0, 0, 255) 等々。
RGB(255, 0, 0) → 255 * 256 ^ 0 + 0 * 256 ^ 1 + 0 * 256 ^ 2 → 255
RGB(0, 0, 255) → 0 * 256 ^ 0 + 0 * 256 ^ 1 + 255 * 256 ^ 2 → 16711680
という具合。
以下のプログラムで、RGB関数の引数に戻せるかな。
唐沢俊孝さんのコメント
(コメントID: 2779)
こんな計算で色を定義しているんですね。
ありがとうございます!
.Color の値は、 RGB 関数の戻り値としても表現できます。
赤なら .Color = RGB(255, 0, 0) 、緑なら、 .Color = RGB(0, 0, 255) 等々。
RGB(255, 0, 0) → 255 * 256 ^ 0 + 0 * 256 ^ 1 + 0 * 256 ^ 2 → 255
RGB(0, 0, 255) → 0 * 256 ^ 0 + 0 * 256 ^ 1 + 255 * 256 ^ 2 → 16711680
小川 慶一さんのコメント
(コメントID: 2785)
カラーモニターの光の三原色は、Red, Green, Blueです。
その発色度合を0から255までの256段階で表現しています。
複数パラメータをひとつの変数で表現するために数値のケタ違いを使うのはITの世界では常道です。
この場合は、256進数ということですね。