フォームやコントロールの作成時には、テーマ色がデフォルトで入りますよね。
明るさや暗めで微調整はできるし色にも特に不満はないのですが、VBAに表示された10進数から計算した色コードに変えると、色合いが変わってしまいます。
テーマ色の色合いをコードで指定するのは無理なんでしょうか。
以下、色々試した忘備録です。
Accessのテーマ色について
(1)色合いの変化を確認
フォームを作成した時の状態です。
コマンドボタンの背景色はテーマの「アクセント1 明るさ40%」で、VBAでは「14461583」です。
コマンドボタンの背景色を、
16進表記の「#8FAADC」に
変えたところ、右記のように
色合いが違ってしまいました。
「アクセント1 明るめ40%」→「14461583」= 「#8FAADC」
色コードからはテーマ色のような色合いを指定できません。 逆必ずしも真ならず、です。
(2)テーマの色コード
いろいろ調べたので
ついでに載せます。
(3)Access 色コードの変換ツール
<仕様> ➀ 10進数を 16進数と、色コードに変換する。 ➁ 16進数から10進数へ、 色コードから10進数へ変換する。
(3.1) 10進数から16進数表記(色コード)への変換コード
<説明> ➀ Me.tx16進数=Hex$(decRGB) 「Me.」:このフォームを指す。 Hex$:カッコ内の数値を16進数( Hexadecimal)に変換する。 ➁ 色コードは16進数の6桁なので、前にゼロを詰めて右から6文字分を取り出す。 ➂ 6桁の文字列の5番目から2文字が「赤」、3文字目から2文字が「緑」、1番目から2文字が「青」。 ➃ 2文字ずつ、 赤+緑+青 の順で連結。
(3.2) 16進数表記(色コード)から10進数への変換コード
<説明> ➀ Len(strHex) <> 6 Len:カッコ内の文字列の文字数を取得。6文字でなければエラーとする。 ➁ 色コードの場合は、頭から2文字ずつ、「赤」、「緑」、「青」 の順。 ➂ 10進数に変換する場合は、逆になるので、「赤」+「緑」*256 +「青」*256*256
(3.3) 16進数から10進数への変換コード
➀ Trim$(Me.tx16進数) : 入力された文字列の前後の空白を除去する。 Len(strHex)>6 : 6文字超の16進数は色コードとして不適切なのでエラーとする。 ➁ strHex=Left$("000000",6-ix1)+strHex ix1=Len(strHex): ix1に文字数を計算。6桁に満たない桁数分を前にゼロで補っている。 ➂ 10進数 = 頭から2文字*256*256+次の2文字*256+最後の2文字
一部をテーマ外の色にすると画面の統一性がなくなるので、どちらかに決めた方がいいと思いました。
悩んだ割には得るところの少ない作業でした。