Access

Accessでコントロールの色を変える2つの方法

Access色変更
記事内に商品プロモーションを含む場合があります

Accessでコントロールの色を変更する方法は、フォームのデザインビューでプロパティから変更する方法、そしてVBAでコードを記述する方法の2つです。

コントロールとは、フォームのヘッダー、詳細、フッターやコンボボックス、テキストボックスなどの入力系コントロール、コマンドボタンなどです。

Access2010で検証しています。古いバージョンのAccessの場合、コマンドボタンの背景色などは変更できません。

フォームのデザインビューでコントロールの色を変える

各コントロールのプロパティから以下の色を変更できます。

背景色 コントロールの背景の色
境界線色 コントロールの枠(縁取り)の色
前景色 コントロールのテキストの色

プロパティの画面は以下の通りです。

Access色変更

色の指定方法は2パターンあります。

あらかじめ定義されている色から選択する方法と、独自の色を指定する方法です。

「背景色を変えても反映されない⁉」と思ったら、背景スタイルが「透明」になっていないか確認しましょう。

背景スタイルが透明だとどんなに色を変えても透明です(笑)

予め定義されている色から選択する方法

Access色の定義

上記のようにコンボボックスを開くと選択肢が表示されます。

これらの定数を使用することでWindowsのシステムカラーに合わせることができますのでwindowsのバージョン変更などの際に違和感なく溶け込むことができます。

独自の色を指定する方法

とはいえ、わざわざ変更するからにはコントロールを目立たせたい場合や会社のイメージカラーを使いたい場合など、特定の色を指定したいケースの方が多いかと思います。

その場合は、カラーチャートを使って選択するか、特定の色を指定することになります。

Accessカラーチャート

テーマの色や標準の色に指定したい色がなければ、「その他の色」からRGBを指定して色を作成することも可能です。

Accessカラー作成

デザインビューではこのように直接カラーを指定します。

VBAでコントロールの色を変える

次にVBAから指定する方法です。

この方法は状況に応じて色を動的に変更する場合に使うことが多いかと思います。

例えば、以下のように計算結果が正数の時は前景色が黒、負数の時は赤で表示させたい場合などです。

収支サンプル
サンプルプログラムは以下の通りです。

    '収入-支出を計算して収支コントロールにセット
    Me.txt収支 = Me.txt収入 - Me.txt支出
    
    '収支がマイナスなら前景色は赤
    If Me.txt収支 < 0 Then
        Me.txt収支.ForeColor = vbRed
    '収支がプラスなら前景色は黒
    Else
        Me.txt収支.ForeColor = vbBlack
    End If

このサンプルプログラムでは、色の指定にVBの定数を使用していますが、色の指定方法も3種類あります。

VBの定数を使用して色を指定する

サンプルでご紹介した通り、VBで定義されている色を指定します。

定義済みの色は以下の通りです。定義済みの色の種類はあまり多くはありません。

vbBlack
vbRed
vbRed
黄色 vbYellow
vbBlue
マゼンダ vbMagenta
シアン vbCyan
vbWhite

RGB関数を使用して色を指定する

VBAの関数RGB()を使用して色を指定する方法もあります。

me.txt収支.ForeColor = RGB(255, 0, 0)

Accessカラー作成

この画面の赤(R)、緑(G)、青(B)をそれぞれRGB関数の引数に指定します。

16進数で色を指定する

カラーチャートなどで見つけた16進数の色(例:FF0000)を指定したい場合は以下のように指定します。

Me.txt収支.ForeColor = RGB(Val(“&HFF”), Val(“&H00”), Val(“&H00”))

16進数をRGB毎(2桁ずつ)に10進数に変換してRGB関数の引数として渡します。

アクセスのカラーコードは特殊なので、16進数のコードを単純に10進数に変更しても希望の色になりません。(エラーにはなりませんが別の色になります)

NG例:me.txt収支.ForeColor = Val(“&HFF0000”)

\逆引き辞書があると便利です/
[itemlink post_id=”1386″]

ABOUT ME
アズビーパートナーズ
プログラマー→社内SE→SIerのお仕事をしています。 メーカー勤務を経て、中小企業の社内SE、フリーランスなど様々な形態で働いてきました。 業務上生まれた困った…を解決してきたTipsを備忘録も兼ねて公開しています。 困っている誰かのお役に立てれば幸いです。