Accessお手本データベースのホームへ戻る

レポートの詳細セクションに背景色を付けるお手本データベース

 

5-6-1 レポートの詳細セクションに1行間隔で背景色を付けて印字した例

 

このサンプルデータベースは、得意先リストに1行間隔で背景色を付けて印刷して見易くしています。背景色は、薄目と濃い目の2種類用意していますので、お好みの色を選択することができます。得意先リストを見易くするには、背景色を付ける替わりに下線を引いたり、表を作成する方法などがあります。また、特定の得意先に斜線を引いて強調することもできます。

 

サンプルデータベース(CH5-6.mdb)では、以下のノウハウを習得することができます。

 

◆ レポートに1行間隔で背景色を付ける方法

◆ 特定のレコードに斜線を引いて強調する方法

 

   サンプルデータベースで使用するテーブルを準備するには

 

1 Accessを起動したら作業フォルダに、新規データベースCH5-6.mdbを作成します。

 

2 メニューから外部データの取り込みテーブルのリンクをクリックします。リンクのダイアログが表示されたら、Access のサンプルデータベース Northwind.mdbを選択してリンクボタンをクリックします。(Northwind.mdbは、デフォルトでは”C:\Program Files\Microsoft Office\Office\Samples”にインストールされます。)

 

3 テーブルのリンクのダイアログが表示されたら、すべて選択のボタンをクリックします。最後にOKボタンをクリックしてリンクを完了させます。

 

4 テーブルをリンクしたらデータベースウィンドウにNorthwind.mdbの全てのテーブルが表示されているか確認します。

 

5 テーブルの準備ができたら、Access を終了させます。

 

   レポートに1行間隔で背景色を付けるには

 

1 Accessを起動したら作業フォルダに作成したCH5-6.mdbを開きます。

 

2 データベースウィンドウからレポートをクリックしたら、新規作成ボタンをクリックします。レポートの新規作成ダイアログが表示されたら、一覧からレポートウィザードを選択します。基になるテーブル/クエリのコンボボックスから得意先を選択したら、OKボタンをクリックします。ウィザードの指示に従って、図5-6-2に示すようなレポートを作成します。

 

5-6-2 得意先リストのレポートレイアウト

 

3 メニューからコードのアイコンをクリックしてレポートモジュールを表示させます。CH5-6.mdbを開いたら、rptCustomerのレポートモジュールをコピーして貼り付けます。レポートモジュールのソースコードは、リスト5-6-1を参照してください。また、本書CD-ROMCH2-6.mdbを開いたら、モジュールbasLinkedTables, basMyLib, basWindowsCommonDialogをインポートしておいてください。

 

4 レポートをrptCustomerの名称で保存したら、メニューから印刷プレビューのアイコンをクリックして確認します。

 

5 レポートに1行間隔で背景色が表示されることを確認したら、Access を終了させます。

 

 

Sub 詳細_Format()イベントの処理

このイベントは、詳細セクションのフォーマット時に実行されます。このイベントでは、詳細セクションの背景色(BackColor)に灰色のカラー値を設定して、1行間隔で背景色が表示されるようにしています。mfBackColor = Not mfBackColorを実行すると、mfBackColorFalseのときはTrueTrueのときはFalseが設定されます。

 

                Me.Section(0).BackColor = IIf(mfBackColor, conGray, conWhite)

                 mfBackColor = Not mfBackColor

 

レポートモジュールの宣言部に、条件付コンパイル定数LightGrayBarを定義していますが、この定数にTrueを設定すると濃い目の背景色が表示されます。Falseを設定すると、薄目の背景色が表示されます。

 

#Const LightGrayBar = False

#If LightGrayBar Then

                    Private Const conGray = &HDDFFFF

                    Private Const conWhite = &HFFFFFF

#Else

                    Private Const conGray = vbMenuBar

                    Private Const conWhite = vbWhite

#End If

 

リスト5-6-1 rptCustomerのレポートモジュール

Option Compare Database

Option Explicit

 

#Const LightGrayBar = False

 

#If LightGrayBar Then

  Private Const conGray = &HDDFFFF    ' 14548991

  Private Const conWhite = &HFFFFFF   ' 16777215

#Else

  Private Const conGray = vbMenuBar

  Private Const conWhite = vbWhite

#End If

 

Private mfBackColor As Boolean

 

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

  Me.Section(0).BackColor = IIf(mfBackColor, conGray, conWhite)

  mfBackColor = Not mfBackColor

End Sub

 

 

Tips

サンプルデータベースでは、詳細セクションに1行間隔で背景色を付けるのに、メモリ変数(mfBackColor)を使用して詳細セクションの背景色を白色(conWhite)と灰色(conGray)に切り替えています。VBAXORコマンドを使用すると、背景色を効率良く切り替えることができます。

 

Me.Section(0).BackColor Xor &H220000を実行すると、BackColorが灰色(DDFFFF)と白色(FFFFFF)に交互に切り替わります。

 

Print Hex(&HFFFFFF Xor &H220000)    => DDFFFF

Print Hex(&HDDFFFF Xor &H220000)    => FFFFFF

 

 

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

  Me.Section(0).BackColor = Me.Section(0).BackColor Xor &H220000

End Sub

 

 

 


 

Tips

レポートのLineメソッドを使用すると、特定の得意先に斜線を引いて強調することができます。

 

詳細セクションのOnPrintイベントに、以下のコードを追加すると電話番号の市外局番が(011)の得意先が赤色の斜線付きで表示されます。

 

Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)

  Me.DrawWidth = 4

  If InStr(1, Me.電話番号, "(011)") Then

    Me.FillColor = vbRed

    Me.FillStyle = 4

    Me.Line (0, 0)-(Me.Width, Me.Height), 0, B

  End If

End Sub

 

 

5-6-3 電話番号の市外局番が011の得意先を斜線付きで印字

 

 

ダウンロード (CH5-6.lzh)
Accessお手本データベースのホームへ戻る