グループ項目を垂直方向にセンタリングする
レポートで、大項目の「重複データ非表示」を「はい」にするとき、グループの一番上に表示されますが、垂直方向の真ん中に表示したい。
AccessClubの初級者掲示板の レポートで表示位置を調整したい であった質問です。
Excelでは、セル結合させて、垂直方向のセンタリングで簡単に実現できます。Accessではプロパティ設定等で簡単に実現するわけにはいきません。
VBAでワークテーブルに書き出してとか、Excelに出力してとか、結構大変なことになりそうに思いますが、実は、レポートの機能をうまく使えば4行ほどの簡単なコードを記述するだけで実現できます。
難易度:
概要
大項目グループヘッダーのテキストボックスで =Count(*) でグループ内件数を出して、
その件数でフォーマット時にグループヘッダーの高さを設定して、項目名も
真ん中に移動させます。
Me.MoveRayout=False で詳細セクションをグループヘッダー上部から上書きします。
サンプル作成
大項目でグループ化してグループヘッダーを表示させます。
グループヘッダーにテキストボックスを配置して、
プロパティ | 設定値 |
---|---|
コントロールソース | =Count(*) |
可視 | いいえ |
名前 | GCnt |
グループヘッダーフォーマット時
具体的にどのようになっているかイメージしにくいかも知れませんが、上記の Me.MoveLayout = False をコメントアウトすると下図のような結果になります。(分かりやすくするためにグループヘッダーを着色してます。)
グループ内の件数に応じて、セクションの高さと項目の表示位置を調整してます。Me.MoveLayout = False とすることで、印字位置が移動しないので、詳細セクションがヘッダーに重なる位置に移動して表示されることになります。
追記 2014/08/28:
グループ化の設定で「1ページにグループをまとめる」(同一ページ印刷「はい」)にしてある場合、改ページすると、ページ最後の下部枠線が表示されません。それに対応する方法を追記します。サンプルファイルも修正済みのものに差し替えました。
グループヘッダーの下部に直線コントロール(名前は、「グループ下枠線」)を配置して、フォーマット時のイベントプロシージャを下記のように変更してください。
サンプルファイルが下記からダウンロードできます。
RptHeaderVerticalCentering_07.zip (Access 2007-2010 形式 - 24kb)
RptHeaderVerticalCentering.zip (Access 2002-2003 形式 - 22kb)
RptHeaderVerticalCentering_2k.zip (Access 2000 形式 - 22kb)