アプリ版:「スタンプのみでお礼する」機能のリリースについて

Accessのフォームで以下のようなことを実現したいのですが、

1.テーブルAに以下のような情報を持たせる。
  <テーブル名:A>
  区分値  区分値名   分類
  1    瓶(無色)   10
  2    瓶(有色)   10   
  3    缶       30

2.選択クエリーを使い別のテーブル情報(テーブル名:B)をフォームにて表示させるが、
  フォーム上で表示させる時に、テーブルAの区分値名を表示させる。

  
3.2の際にテーブル名:Aの分類が”30”だった場合、
  フォーム上に設けたチェックボックスにグレーの色をつける。

いろいろな書籍等で調べているのですが、分かりません。
どなたかご教授頂けませんか?

A 回答 (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

'以上 ---------------------------------------------


なお、チェックボックスの四角内の背景色は変更できません。また、
スモールサンプルなので他に必要な処理は適当に追加して下さい。
「AccessVBAの値によってチェックボ」の回答画像2
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/29 21:40

チェックボックスの背面にラベル等背景色を設定できるコントロールを


配置し、Aの分類の値によって VBA で色を更新する。

というのが定番かと思います。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
ご回答いただいたように対処する場合、VBAでのロジック(文法)はどのようにすればいいですか?

お手数ですが、再度教えて頂けると助かります。

お礼日時:2009/07/29 12:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A