Microsoft Access 掲示板

印刷時拡張を設定したテキストボックスの下端に合わせて横線を引きたい

4 コメント
views
4 フォロー

みなさま初めまして。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)

 しかし、よこ罫線を引くことができますが、文字の多いテキストボックスの中程に線できてしまい、下端にきません。

どこがまちがっているのでしょうか。
 ご教示よろしく御願いいたします。

maxwanta
作成: 2024/12/13 (金) 21:32:22
通報 ...
1

Office2010とはずいぶん古いバージョンですが間違いないですか。
それだけ古いと下記の回答では対応してないかもしれませんので、その場合はご容赦ください。

標記のとおり、印刷時拡張を設定してテキストボックスの下端にあわせて横線を引きたいとおもっています。

テキストボックスの「立体表示」プロパティに「下線付き」という設定があります。その設定にすればVBAを使うまでもなく下線が表示できますし、印刷時拡張しても追従します。

上記ではうまくできないという場合は、質問のコードでいいと思いますが、このコードはどこに記述してますか。
テキストボックスを配置しているセクションの「印刷時」イベントに記述してますか。
テキストボックスが詳細セクションにあるのなら、下記のようになるはずです。

Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
    ' As Integerは変数毎につける必要がある  省略するとVariant型になる
    Dim p1 As Integer, p2 As Integer, p3 As Integer, 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)
End Sub
2
maxwanta 2024/12/14 (土) 00:27:20 f81c2@2919c

hatena さん
早速 ご回答ありがとうございました。成功しました。

》「印刷時」イベントに記述してますか。    

私は、「フォーマット時」に上記 vbaを記載していました。
「印刷時」に記載すると、狙い通りの結果を得られました。
実は、フォーマット時 と 印刷時の違いを知らなかったのです。

》「立体表示」プロパティに「下線付き」

こんな設定があるのも知りませんでした。これを指定すると、VBAを記載するまでもなく、目的を達成できました。

ありがとうございました。

3

実は、フォーマット時 と 印刷時の違いを知らなかったのです。

フォーマット時で印刷時拡張を考慮して位置やサイズを計算してレイアウトを決定します。
フォーマット時では印刷時拡張したときの高さは取得できません。

印刷時にフォーマット時で決定されたレイアウトで出力します。
この時点で印刷時拡張されたときの高さを取得できます。
印刷時では直線コントロールの位置やサイズは変更できないので、Lineメソッドで直線を描画します。

4
maxwanta 2024/12/16 (月) 09:20:09 a6fab@afdb1

hatenaさん

》フォーマット時では印刷時拡張したときの高さは取得できません。

よくわかりました。詳しくご教示いただきありがとうございました。