#392 | カレント行全体の背景色を変えてハイライト表示させるには? | フォーム、VBA | |
表形式あるいはデータシート形式のフォームにおいて、現在カーソルがある行、すなわちカレント行全体の背景色を他の行とは別の色に設定して、ハイライト表示させる方法です。ここでは、詳細セクションに配置されたすべてのコントロールについて、条件付き書式の条件式を行ごとに動的に変更することによって、その動作を実現します。 具体的には、『その行を一意に識別する主キーフィールドの値がそのレコードの値と同じだったら』という条件式をレコードごとに設定します。少し分かりづらい表現かもしれませんが、たとえば"得意先コード"が主キーフィールドで、1行目のその値が「10」だったとします。そのとき、「得意先コード = 10」という条件付き書式を設定すれば、必ずそのレコードだけがその条件に一致しますので、結果的にそのレコードだけにその書式が適用され、その行だけをハイライト表示させることができるわけです。 この処理を行うためには、次のようなイベントプロシージャを記述します。 Private Sub Form_Current() 'レコード移動時 Dim avarContorol() As Variant Dim iintLoop As Integer 'このフォーム内の対象コントロールを配列に設定 avarContorol = Array("得意先コード", "得意先名", "郵便番号", "都道府県", "住所1") 'すべての対象コントロールのループ For iintLoop = 0 To UBound(avarContorol) With Me(avarContorol(iintLoop)).FormatConditions '既存の条件付き書式を削除 .Delete '新しい条件付き書式を追加 ' (得意先コードがカレント行の得意先コードと等しいときの条件を設定) With .Add(acExpression, , "[得意先コード] = " & Me!得意先コード) '背景色を設定 .BackColor = 52377 'フォントを太字に設定 .FontBold = True End With End With Next iintLoop End Sub 実行例: このとき、得意先コードの値は「1」なので、カレント行のみが「"[得意先コード] = " & Me!得意先コード」、つまり「[得意先コード] = 1」という条件式が真となり、上記の条件付き書式が適用され、この行の各コントロールの書式が変更されます。 このとき、得意先コードの値は「6」なので、「[得意先コード] = 6」という条件式が真となり、上記の条件付き書式が適用されます。 |
|||
|
Copyright © T'sWare All rights reserved |