印刷時拡張を設定した時にテキストボックスの高さを揃える

f:id:accs2014:20180722233954p:plain:right:w400

 レポートで印刷時拡張を有効にしたとき、通常は横に並んでいる他のテキストボックスとは高さが揃わないので、画像のようにカッコ悪い感じになります。そこでテキストボックスの境界線の代わりにVBAのLineメソッドで線を引く方法もありますが、印刷時拡張を行うテキストボックスが複数になったりすると面倒です。
 ここでは、レイアウトを用いて高さを揃える方法を紹介します。レポートをオート作成したときにそうなるのでお気づきの方も多いと思いますが、以下ではデザインビューから手動で設定してみます。
 なお、画像のレポートをサンプルとします。「氏名」の印刷時拡張プロパティが「はい」となっています。



手順

f:id:accs2014:20180722233951p:plain:right:w600

 デザインビューで詳細セクションのテキストボックスをすべて同時に選択して右クリックし、「レイアウト」「表形式」と選択します。

(※この例ではレポートヘッダーのラベルとテキストボックスを対応付けしていません。詳細セクションにラベル付きのテキストボックスを置いた上で「レイアウト」「表形式」を選択すると、ラベルがテキストボックスが対応付けられたままヘッダーに移動し、この後の設定の様子が少し違ってきますのでご注意ください)


f:id:accs2014:20180722233948p:plain:right:w400

 ページヘッダーが出現しました。ここではページヘッダーも必要ないため表示しないこととします。
 また、同時にテキストボックスの大きさが変わることがありますので適宜再調整してください。


f:id:accs2014:20180722233945p:plain:right:w400

 調整ののち、テキストボックスを選択してみました。
 これらのテキストボックスが表形式にまとめられていることを表す点線が表示されているのがわかります。


f:id:accs2014:20180722233942p:plain:right:w400

 実はこれだけで、要するに表形式のレイアウトを適用しただけでテキストボックスの高さは最も高いコントロールに合わせられます。


f:id:accs2014:20180722234026p:plain:right:w600

 テキストボックスの間の隙間を詰める例を見てみます。
 プロパティの「上スペース」~「右スペース」の値が0より大きくなっているので…


f:id:accs2014:20180722234023p:plain:right:w600

 すべて0cmにした上でテキストボックス間の隙間とレコード間の隙間、ラベルの隙間を詰めました。


f:id:accs2014:20180722234020p:plain:right:w400

 これで隙なく罫線状に表示されます。


備考

印刷時拡張を複数のテキストボックスに設定した場合

f:id:accs2014:20180722234620p:plain:right:w400

 上記の方法を使うと、最も高いテキストボックスに高さが合わせられます。印刷時拡張を設定したテキストボックスが複数ある場合でも同様です。
 この例では「氏名」と「住所」で印刷時拡張を設定していますが、4つ目のレコードでは最も高い「住所」に高さが合わせられているのがわかります。


印刷時縮小に対し設定した場合

f:id:accs2014:20180722234017p:plain:right:w400

 最も高いテキストボックスに高さが合わせられますので、印刷時縮小の場合には注意が必要です。
 この例では「氏名」だけ印刷時縮小を設定していますが、文字数が少ないレコードでもテキストボックスの高さが縮まっていません。他の2つのテキストボックスの高さに合わせられてしまうためです。
 画像は省略しますがすべてのテキストボックスで印刷時縮小を設定すれば、1,3,5番目のレコードについては高さが縮まります。