見出し画像

【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より、皆様のご応募お待ちしております。
【株式会社エアリー:ホームページ】

https://www.airily.co.jp/

この記事が気に入ったらサポートをしてみませんか?