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

レコードがない場合も用紙の最後まで罫線を出力する関数

以前、レコードがない場合も用紙の最後まで罫線を出力する でも紹介しましたが、下記の納品書のようにレコード数に関係なく決まった行数の表形式で出力する方法です。前回は、VBA1行だけでしたが、デザインビューでのレイアウトが少し複雑になりました。今回は、VBAのコードは30行ほどですがコピーして貼り付けるだけで動作しますし、デザインビューでは通常通りの1行分のレイアウトですみます。

RptFixRow.gif

難易度は3にしましたが、コードを理解してカスタマイズするときの基準です。コードが読めなくてもコピーして貼り付けるだけで利用できますので、初心者でも使えると思います。

難易度:

仕様

ページヘッダーセクションに伝票のヘッダー項目を配置してあり、詳細セクションに伝票の明細項目が配置してあるものとします。デザイン時には罫線は直線コントロールで通常通りに配置していきます。詳細セクションに配置して直線コントロールの「可視」は「いいえ」にしておきます。

あとは、レポートの「ページフォーマット時」プロパティ欄に、20行分の罫線を出力したい場合は、
=PageDrawLine(20)
と記述するだけです。

設計

下記の関数をコピーして標準モジュールに貼り付けて保存してください。

レポートのデザインビューでは詳細セクションに1行分のコントロールを配置します。

境界線スタイル(DrawStyle)や境界線幅(DrawWidth )は2種類しか対応してませんので、必要ならコードを追加してください。また、直線コントロールの罫線と、Lineメソッドでは描画方法が異なるらしく、微妙に出力結果か異なる場合がありますので、ヘッダー部分の直線コントロールと差が出る場合があります。細線なら差は出ないようです。太線や点線を使う場合は、ヘッダー部分もLineメソッドで出力するようにしたほうがいいかもしれません。

ロジック

レポートのページフォーマット時に、For Each で、詳細セクションに配置した直線コントロールを探して、Lineメソッドで指定回数分、詳細セクションの高さ分移動させながら描画していきます。

サンプルファイルが下記からダウンロードできます。
RptFixRowFunc_07.zip (Access 2007-2010 形式 - 61kb)
RptFixRowFunc.zip (Access 2002-2003 形式 - 89kb)
RptFixRowFunc_2k.zip (Access 2000 形式 - 86kb)

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/47-cb47c094
該当の記事は見つかりませんでした。