みなさま初めまして。maxwanta と申します。
標記のとおり、印刷時拡張を設定してテキストボックスの下端にあわせて横線を引きたいとおもっています。
レポートは 高さ6センチ、幅7センチほどの 小さくて簡単なもので、
横長テキストボックスが5つほどたてに並んでいます。
その中の、s_koment. は 印刷時拡張 を設定してあります。
直線21 は レポート左側のたて罫線
直線20 は レポート右側のたて罫線です。
s_koment の上位置に s_komentの高さを足したら 印刷時拡張したテキストボックスの
下端に横線が引ける とかんがえ、以下のような VBAをつくりました。
Dim p1, p2, p3, p4 As Integer
Dim ht1 As Integer
p1 = Me.直線21.Left
p2 = Me.直線20.Left
p4 = Me.s_koment.Top
ht1 = Me.s_koment.Height
Me.Line (p1, p4 + ht1)-(p2, p4 + ht1)
しかし、よこ罫線を引くことができますが、文字の多いテキストボックスの中程に線できてしまい、下端にきません。
どこがまちがっているのでしょうか。
ご教示よろしく御願いいたします。
Office2010とはずいぶん古いバージョンですが間違いないですか。
それだけ古いと下記の回答では対応してないかもしれませんので、その場合はご容赦ください。
テキストボックスの「立体表示」プロパティに「下線付き」という設定があります。その設定にすればVBAを使うまでもなく下線が表示できますし、印刷時拡張しても追従します。
上記ではうまくできないという場合は、質問のコードでいいと思いますが、このコードはどこに記述してますか。
テキストボックスを配置しているセクションの「印刷時」イベントに記述してますか。
テキストボックスが詳細セクションにあるのなら、下記のようになるはずです。
hatena さん
早速 ご回答ありがとうございました。成功しました。
》「印刷時」イベントに記述してますか。
私は、「フォーマット時」に上記 vbaを記載していました。
「印刷時」に記載すると、狙い通りの結果を得られました。
実は、フォーマット時 と 印刷時の違いを知らなかったのです。
》「立体表示」プロパティに「下線付き」
こんな設定があるのも知りませんでした。これを指定すると、VBAを記載するまでもなく、目的を達成できました。
ありがとうございました。
フォーマット時で印刷時拡張を考慮して位置やサイズを計算してレイアウトを決定します。
フォーマット時では印刷時拡張したときの高さは取得できません。
印刷時にフォーマット時で決定されたレイアウトで出力します。
この時点で印刷時拡張されたときの高さを取得できます。
印刷時では直線コントロールの位置やサイズは変更できないので、Lineメソッドで直線を描画します。
hatenaさん
》フォーマット時では印刷時拡張したときの高さは取得できません。
よくわかりました。詳しくご教示いただきありがとうございました。