Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2019)
サブフォームに表示されているレコードをグループ毎に交互に色を変えたい
投稿日時: 24/10/30 12:43:17
投稿者: かず

みなさま、お忙しい中たいへん申し訳ありません。
 
レポートですと
Option Compare Database
     Const conGray = &HE0E0E0
     Const conWhite = &HFFFFFF
     Dim wkBackColor As Boolean
     dim wk_データ As string 
Option Explicit
 
Private Sub 詳細_Format
        If wk_データ <> Nz(Me!wk_データ, "") Then
           wk_データ = Nz(Me!wk_データ, "")
           Me.Section(0).BackColor = IIf(wkBackColor, conGray, conWhite)
           wkBackColor = Not wkBackColor
        End If
End Sub
 
という感じでできたのですが
サブフォームの場合はどうすればできるのか?
まったく見当がつかないのです
 
条件付き書式では無理のようですし、
ご教示いただければ幸いです
 
grp 表示内容
1 山 →背景色は黄色
1 山 →背景色は黄色
1 山 →背景色は黄色
1 山 →背景色は黄色
2 川 →背景色は白色
2 川 →背景色は白色
2 川 →背景色は白色
3 湖 →背景色は黄色
3 湖 →背景色は黄色

回答
投稿日時: 24/10/30 16:00:22
投稿者: Suzu

逆に、条件付き書式でないと無理です。
 
レポートでは、Formatイベントがあり、
 カレントレコードのコントロールの書式を1レコード毎にVBAで指定できます。
 
フォームの VBAで1レコード毎にコントロールの書式を変える事はできません。
詳細セクションに配したコントロールであれば 変えようとすると、
  全レコードのコントロールに対し VBA の命令が適用されます。
 
 
簡単なのは
 
grp の値に対し MOD関数で、偶奇を判定
偶数なら 白 奇数なら 黄
 
詳細セクションいっぱいにテキストボックスを配置し、最背面に配置 他のコントロールの背景を透明
または
            テキストボックスを配置し、最背面に配置
            他のコントロールの高さを そのテキストボックスより低く
 
後は、grp または MOD(grp,2) の値 を 条件に、そのテキストボックスの背景色に対し条件付き書式を設定

投稿日時: 24/10/31 05:36:07
投稿者: かず

 Suzuさんありがとうございます
 
レポートと同じようにはいかないのですね。
 
「grp または MOD(grp,2) の値 を 条件に、そのテキストボックスの背景色に対し条件付き書式を設定」を参考に頑張ってみます。

投稿日時: 24/10/31 14:36:53
投稿者: かず

Suzuさん
おかげ様で解決しました。
 
テーブルに表示色を判断するに、1列つけ加えました。
サブフォーム表示前に列に値を編集して
表示する時には条件付き書式でその列の値を参照する事で
色付きの表示をするようにできました。
 
無事に解決しました。
ありがとうございました!