MS Access Tips/Sample and VBA and Blog customize etc...

グループ項目を垂直方向にセンタリングする

レポートで、大項目の「重複データ非表示」を「はい」にするとき、グループの一番上に表示されますが、垂直方向の真ん中に表示したい。

AccessClubの初級者掲示板の レポートで表示位置を調整したい であった質問です。

RptHeaderVerticalCentering0.png

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)

1 Comments

Zakk says..."中項目が沢山ある時に大項目と中項目の印刷ズレ"

はじめまして
いつも大変参考にさせて頂いております。

サンプルファイルでやりたいことができました。ありがとうございます。
ただ、大項目3の中項目が多い時、例えば28件ある時に、大項目3だけ印刷されるページが発生してしまうのですが、どのように回避すればよろしいでしょうか。色々試してみたのですが、どれもうまくいかず。。行き詰ってしまい質問させて頂きました。ご検討いただければ幸いです。

2020.07.21 10:01 | URL | #AYM63AsA [edit]

Leave a reply






Trackbacks

trackback URL
https://hatenachips.blog.fc2.com/tb.php/230-63d6abd2
該当の記事は見つかりませんでした。