• 締切済み

AccessVBAの値によってチェックボックスの背景色を変えるには?

Accessのフォームで以下のようなことを実現したいのですが、 1.テーブルAに以下のような情報を持たせる。   <テーブル名:A>   区分値  区分値名   分類   1    瓶(無色)   10   2    瓶(有色)   10      3    缶       30 2.選択クエリーを使い別のテーブル情報(テーブル名:B)をフォームにて表示させるが、   フォーム上で表示させる時に、テーブルAの区分値名を表示させる。    3.2の際にテーブル名:Aの分類が”30”だった場合、   フォーム上に設けたチェックボックスにグレーの色をつける。 いろいろな書籍等で調べているのですが、分かりません。 どなたかご教授頂けませんか?

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

現状の詳細がわからないので、こちらの都合で説明します。 1. テーブルA を元にフォーム作成ウィザードで単票形式のフォームを作成 2. デザインモードで開き、添付図のように以下のコントロールを追加   テストなので非連結で良い      1)Checkbox コントロール  名前:chkSample   2)Label コントロール    名前:lblBackColor      この時、Label が最背面にくるようにする 3. VBE を開き、以下のソースをペーストする ' // フォームを開いた(ロード)したときのイベント ' Private Sub Form_Load()   With Me.lblBackColor     ' 適当に位置やサイズを変更     .Top = Me.chkSample.Top - 40     .Left = Me.chkSample.Left     .Width = Me.chkSample.Width     .Height = Me.chkSample.Height + 10     ' キャプション消去     .Caption = ""     ' 背景スタイルをノーマルにする     .BackStyle = 1 ' 1:Normal 0:Transparent   End With End Sub ' // レコードが移動した時のイベント ' Private Sub Form_Current()   Call ChangeBackColor End Sub ' // 分類フィールドの値が変更されたときのイベント ' Private Sub 分類_AfterUpdate()   Call ChangeBackColor End Sub ' // ラベルの背景色を変更する ' Private Sub ChangeBackColor()      Dim nColor As Long   If Val(Me.[分類].Value) = 30 Then     nColor = RGB(220, 220, 220)   Else     nColor = Me.詳細.BackColor   End If   Me.lblBackColor.BackColor = nColor End Sub '以上 --------------------------------------------- なお、チェックボックスの四角内の背景色は変更できません。また、 スモールサンプルなので他に必要な処理は適当に追加して下さい。

hide0421
質問者

お礼

再度のアドバイスありがとうございます。 実現可能であれば、チェックボックスの□内の背景色を変更させたかったのですが、できないのですね。 アドバイス頂いたように、ラベルに対して背景色を変更する方向で検討します。 サンプルまで作成して頂き、ありがとうございます。 大変感謝しております。

すると、全ての回答が全文表示されます。
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

チェックボックスの背面にラベル等背景色を設定できるコントロールを 配置し、Aの分類の値によって VBA で色を更新する。 というのが定番かと思います。

hide0421
質問者

お礼

早速の回答ありがとうございます。 ご回答いただいたように対処する場合、VBAでのロジック(文法)はどのようにすればいいですか? お手数ですが、再度教えて頂けると助かります。

すると、全ての回答が全文表示されます。

関連するQ&A