Microsoft Access 掲示板

レポート内の四角形の背景をVBAで指定したい

7 コメント
views
4 フォロー

お世話になります。

社員用の名札をデータ管理でアクセスを使用しております。
レポートに名刺サイズくらいのボックスを1つだけ置き、ボックス内には名前や所属が
表示されるようにしております。レコードソースはテーブルにしています。

出力用紙サイズはA4で、作成する人数が1人ならボックス1個、5人ならボックスが5個表示されます。
A4サイズ1枚につき最大8人分まで作成できるようにしています。

やりたいことは、社員の区分として正社員/派遣社員がいますので、VBAでレポートプレビュー時にボックスの背景を正社員は白、派遣社員は黄色に分けたいです。
今は、正社員用と派遣社員用にレポートを作成しており、背景はそれぞれの色に設定しているため問題ないですが
できるなら合体させたく考えております。
実現可能でしょうか?

kittty
作成: 2022/09/30 (金) 11:07:57
通報 ...
1
hiroton 2022/09/30 (金) 11:54:07 25049@f966d

印刷しないプレビュー専用ですか?
ものすごく雑にやるならボックスをテキストボックスに変えて

=IIf(社員区分="派遣社員","■")

で、フォントサイズを最大、前景色を黄色にすればそれっぽくなりますよ

もう少しきれいにやるならリッチテキスト形式にして空白(スペース)を敷き詰めてタグのBACKGROUND-COLORスタイルを使って色指定部分を上記条件で変えるとかですかね

もちろんVBAでフォーマット時にボックスの背景色を変更するでもいいと思います

2
kittty 2022/09/30 (金) 14:25:00 3dfab@a3086

hiroton 様

 早々のご回答ありがとうございます。
 説明に不足がありました。
 プレビュー専用ではなく最終的に印刷します。レポートですのでまずはプレビューで確認するという
 作業になります。

 作業の流れとしましては、
  1.作成する従業員情報にフラグを立てる。(チェックボックスにチェックを入れる)
  2.「作成」ボタンからプレビューで確認する

 レポートの開く時イベントで、社員区分に応じた背景色を変更できたらいいと思っています。
 どうか引き続きご教授のほどよろしくお願いいたします。
 

 

3
hiroton 2022/09/30 (金) 15:26:06 25049@f966d

印刷することまで考えてきれいに出したいなら2つ目の手法なら
文字書式:リッチ テキスト形式
コントロールソース:

="<font style='BACKGROUND-COLOR:#" & IIf([社員区分]="派遣社員","FFFF00","FFFFFF") & "'>   </font>"

フォント名:MS ゴシック
フォントサイズ:100
その他余白等は0にする

実際に表示させている文字は全角スペース3つです


VBAならボックスのままでいいのでフォーマット時イベントで背景色を変更

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    Me!ボックス.BackColor = IIf(Me!社員区分 = "派遣社員", 62207, 16777215)
End Sub

上の手法は、あくまでも表示されている文字の背景部分の色なので、余白部分とか望んだ結果にならない場合があります

VBAはいろいろ柔軟に対応できますが、出来ることが多すぎてコードが増えるほど難解なシステムになるので使わなくていい部分には使わないようにしたいという気持ちがhirotonにはあります
後ついでに、フォーマット時イベントはレポートビューだと発生しないとかの違いもありますね

4

四角形はテキストボックスに変更して、条件付き書式を下記のように設定すればいいでしょう。

画像1

VBAでセクション全体の背景色を変更するなら、下記で。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    If Me!社員区分 = "派遣社員" Then
        Me.詳細.BackColor = RGB(255, 255, 0) '黄
    Else
        Me.詳細.BackColor = RGB(255, 255, 255) '白
    End If
End Sub
5
hiroton 2022/10/03 (月) 09:12:38 b09e4@f966d >> 4

そうですよね。条件付き書式で背景変えるのが楽だよなーって思ってたんですけどなんでか見つけられないなーってなったんですよね
ボックス選んだ状態でグレーアウトしてて見逃したとかそんなんだと思います

画像1

6

コントロールソースに■を設定する方法は、条件付き書式より動作が軽いので、覚えておいて損はないと思います。
下記でも同様の方法を使っています。

カレント行の背景色の変更 その3 - hatena chips

7
kittty 2022/10/05 (水) 11:02:43 c6806@a3086

hatena様の「VBAでセクション全体の背景色を変更する」方法で解決しました。
hiroton様、hatena様 ありがとうございました。