【AccessVBA】コンボボックスの背景色を選択した値に応じて変更する(リストの背景を白にしたいとき)
こんにちは。エアリー社員のKです。
先日、Accessで「コンボボックスの背景色を、選択した値に応じて変える」というのを作る機会があったのですが、なかなか思い通りにならず…
自分自身の備忘を兼ねて、ご紹介します。
1.概要
「Accessでコンボボックスの背景色変えるなら、クリック時イベントで値ごとに背景色をコード指定すればできるんじゃないかな」
そう思ってやってみると
選択した値に合わせて、リストを開いたときの背景色も変わってしまいました。
このままでもいいのですが、選択するときは白い背景のほうが見やすそうです。
今回は、「リスト表示時には背景色を白にする」を実現させてみたいと思います。
2.手順
(1) 事前準備
・下記を参考にフォーム「フォーム1」にコンボボックス「combo1」を配置し、値リストを設定する
(2) Visual Basic for Applications を開く
・[データベースツール]→[Visual Basic](Access2019の場合) または、 [Alt] + [F11]キーで Visual Basic for Applications ウィンドウを表示し、「フォーム1」の「コードを表示」をクリック
(3) 背景色にコンボボックスリストの値に応じた色を指定するコードを記述する
・フォームのコードに以下を入力し、保存する
Private Sub changecolor()
'コンボボックスで選択した値に応じて背景色を変更
Select Case combo1.Value
Case 1
combo1.BackColor = 13353215 'ピンク
Case 2
combo1.BackColor = 64636 '若草色
Case 3
combo1.BackColor = 65535 '黄
Case Else
combo1.BackColor = vbWhite
End Select
End Sub
(4) 背景色に白を指定するコードを記述する
・以下のコードを入力し、保存する
Private Sub defaultcolor()
'コンボボックス背景色に白以外の色が指定されている場合は、白に変更する
If combo1.BackColor <> vbWhite Then
combo1.BackColor = vbWhite
End If
End Sub
(5) フォームのプロパティを開き、「クリック時」「フォーカス喪失後」のイベントを入力する
・対象のフォーム名を右クリックし、「デザインビュー」をクリック
・対象のコンボボックスを右クリックし、「プロパティ」をクリック
・「イベント」タブから「クリック時」を選択後、コンボボックスから「[イベント プロシージャ]」を選択し、「・・・」をクリック
・下記のようにコードを入力し、保存する ※(3)のプロシージャを呼出し
Private Sub combo1_Click()
Call changecolor
End Sub
・同様に「フォーカス喪失後」のイベントプロシージャのコードを入力する
Private Sub combo1_LostFocus()
Call changecolor
End Sub
(6) 「フォーカス取得後」「マウスボタンクリック時」「キークリック時」のイベントを記述する
・(5)と同様の操作で「フォーカス取得後」のイベントプロシージャを入力する。
・以下のコードを入力し、保存する ※(4)のプロシージャを呼出し
Private Sub combo1_GotFocus()
Call defaultcolor
End Sub
・同様に「マウスボタンクリック時」「キークリック時」のイベントプロシージャのコードを入力する
Private Sub combo1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call defaultcolor
End Sub
Private Sub combo1_KeyDown(KeyCode As Integer, Shift As Integer)
Call defaultcolor
End Sub
3.実際に動かしてみる
では、実際にコンボボックスを動かしてみましょう。
リストの表示時は、背景色が白で表示されるようになりました。
4.終わりに
今回は、コンボボックスの背景色を変更しても、リスト表示時は背景を白にする方法をご紹介しました。
選択した値を色で見分けたいときに使えるかと思いますので、是非ご活用ください!
我々、株式会社エアリーは、
千葉で働きたい・頑張りたい人材を募集しております!
新卒採用・中途採用どちらも募集しております!
以下HPより、皆様のご応募お待ちしております。
【株式会社エアリー:ホームページ】
この記事が気に入ったらサポートをしてみませんか?