2009年01月09日

レポートの背景色

Accessのセミナーで、レポートに罫線を効率的に作成する方法をご質問頂くことが少なくありません。

Access以外の例えばVB、VB.NET、PHPなどを使ってWindowsフォームやWebアプリを作成する場合を考えると、それでもAccessのレポートはずっと簡単なのですが、Excel(エクセル)の簡便さに比べると、やはり手間がかかるという印象は強いように思います。

罫線を作成する代わりに、VBAを使って背景色を1行おきに変更して対処している例をよく拝見します。

考え方のポイントで基本となるのは
レポート「詳細」セクションの「フォーマット時」イベント
だと思います。

レコードを1行ずつ読み取るごとに「フォーマット時」というイベントが発生しますので、フォーマット時イベントに、
例えば、奇数行ならば、詳細セクションの背景色をグレーにし、それ以外なら(偶数行なら)、詳細セクションの背景色を白くする、という考え方になります。

色々な書き方がありますが、例えば簡単な例を1つ書いてみると以下のようになります。

Dim i As Long  'この行は宣言セクションに記載します。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
  i = i + 1
  If i Mod 2 = 1 Then '2で割った余りを求め、それが1と等しいかどうか判断しています。
    詳細.BackColor = 16777215  '白
  Else '条件に該当しない2で割った余りが 0となる場合です。偶数行が該当します。
    詳細.BackColor = 12632256 'グレー
  End If
End Sub

1レコードずつ読み取られてる度にフォーマット(Format)イベントが発生することを理解しておくと、他にも活用範囲が広がりますので、レポートの大事なイベントの一つだろうと思います。

posted by Three bit com at 10:00| Access(アクセス)