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

図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-ROMのCH2-6.mdbを開いたら、モジュールbasLinkedTables, basMyLib,
basWindowsCommonDialogをインポートしておいてください。
4 レポートをrptCustomerの名称で保存したら、メニューから印刷プレビューのアイコン
をクリックして確認します。
5 レポートに1行間隔で背景色が表示されることを確認したら、Access を終了させます。
Sub 詳細_Format()イベントの処理
このイベントは、詳細セクションのフォーマット時に実行されます。このイベントでは、詳細セクションの背景色(BackColor)に灰色のカラー値を設定して、1行間隔で背景色が表示されるようにしています。mfBackColor = Not mfBackColorを実行すると、mfBackColorがFalseのときはTrue、Trueのときは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 #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)に切り替えています。VBAのXORコマンドを使用すると、背景色を効率良く切り替えることができます。 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 |
|
レポートの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の得意先を斜線付きで印字 |