Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


293 / 2272 ツリー ←次へ | 前へ→

【12215】レポートの自動拡張に合わせて線を引くには tamateboko 12/11/21(水) 12:47 質問[未読]
【12216】Re:レポートの自動拡張に合わせて線を引く... hatena 12/11/21(水) 16:15 回答[未読]
【12217】Re:レポートの自動拡張に合わせて線を引く... tamateboko 12/11/21(水) 18:02 質問[未読]
【12218】Re:レポートの自動拡張に合わせて線を引く... hatena 12/11/21(水) 18:48 回答[未読]
【12219】Re:レポートの自動拡張に合わせて線を引く... tamateboko 12/11/22(木) 11:06 質問[未読]
【12220】Re:レポートの自動拡張に合わせて線を引く... hatena 12/11/22(木) 19:40 回答[未読]
【12221】Re:レポートの自動拡張に合わせて線を引く... tamateboko 12/11/23(金) 10:55 お礼[未読]

【12215】レポートの自動拡張に合わせて線を引くに...
質問  tamateboko  - 12/11/21(水) 12:47 -

引用なし
パスワード
   access2010です。
レポートでテキストboxを印刷自動拡張にしているので、縦罫線をそれに合わせて伸ばし、横線は各ページの最初と
最後だけひきたいのですが、方法を教えてください。
これでものサイトに来る前にいろいろ探したのですが、どう応用してよいかわからず、悩んだ末に投稿しました。

□が一文字分としてみてください。|が引きたい縦線です。

1レコード2行です。
Me.txt1|Me.txt2||Me.txt4|Me.txt6|Me.txt8|Me.txt9 
____|Me.txt3||Me.txt5|Me.txt7|____|Me.txt10

          ↓
□|□□□|□□□□□|□□□□|□□□□□□□□□|□□□
_|□□□|□□□□□|□□□□|_________|□□□

□の縦と横幅が1cmとした場合で教えていただけないでしょうか。
Me.txt2は□が3つあるので、横3cm 縦1cmの 一つのテキストボックスという意味です。

ほぼ全てのテキストボックスが自動拡張です。
自動拡張が一ヶ所しかない例は見ましたが、その例はテキストボックスの高さと行間で
1行の高さを出していましたが、私の場合は
最大に伸びたテキストボックスに合わせて、各行の高さが変わるわけで、
1行の高さを取得する方法も検索しても欲しい情報がつかめずです。

横線は最初と最後だけひきたいのですが
横線はヘッダー部は今、罫線で線を引いています。ですが各ページの最期だけ
引くという方法が調べてもどう応用していいかわからなくて・・・・
よろしくお願いします。

【12216】Re:レポートの自動拡張に合わせて線を引...
回答  hatena  - 12/11/21(水) 16:15 -

引用なし
パスワード
   縦線は、連続していていいのなら、下記の方法がいいでしょう。

[ACC2002] レポートのセクションのサイズに比例して縦線が伸びない
support.microsoft.com/default.aspx?scid=kb;ja;286247&Product=accJPN

各レコード毎で途切れるのなら、下記を参考に。

[AC95] 印刷時拡張を設定したレポートで横罫線をそろえる方法
support.microsoft.com/default.aspx?scid=kb;ja;404907&wa=wsignin1.0


ページの最後に横罫線を引く場合は、
詳細セクションの最下部に直線コントロールを配置して、名前を Line1、可視をいいえにします。
下記のようなVBAになります。
上記の [ACC2002] レポートのセクションのサイズに比例して縦線が伸びない
のコードも組み込んであります。

レポートモジュール
Option Compare Database
Option Explicit
Dim LineBottom As Integer

'ページフォーマット時
Private Sub Report_Page()
  
  Me.Line (0, Bottom)-(Me.Width, Bottom) '横罫線
  LineTop = 0

End Sub

'詳細の印刷時
Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)

  Me.ScaleMode = 1
  Me.ForeColor = 0

  '直線を繰り返し引きます。
  '単位は 567 twip = 1 cm です。
  Me.Line (0 * 567, 0) - (0 * 567, 14400)
  Me.Line (1 * 567, 0) - (1 * 567, 14400)
  Me.Line (1.9 * 567, 0) - (1.9 * 567, 14400)
  
  LineBottom = Me.Top - Me.Printer.TopMargin + Me.Line1.Top'

End Sub

【12217】Re:レポートの自動拡張に合わせて線を引...
質問  tamateboko  - 12/11/21(水) 18:02 -

引用なし
パスワード
   ▼hatena さん:
ありがとうございます。

おしえていただいたサイトは見ていたのですが、わからなかったので投稿しました。またレスの内容も調べてはみたんですが、初心者なので理解するのに時間ばかりかかってしまい、本来の仕事が進まなかったんで・・・もう少し教えてください。

3点です。

14400の方法で縦線は引けましたが、一つ一つのテキストボックスの高さを取得、比較して縦線を引く方法もありました。どちらも連続した縦線がひけるのですが、この2つは、どう使い分けるものなのでしょうか。
 
Me.Line (0, Bottom)-(Me.Width, Bottom) '横罫線
LineTop = 0
で変数が定義されていないというエラーが出ました。何が足りないのでしょうか。
またここで何をしているという意味なんでしょう。

Line1を非可視にして、
  LineBottom = Me.Top - Me.Printer.TopMargin + Me.Line1.Top
とは、何をしているのでしょうか。

よろしくお願いします。

【12218】Re:レポートの自動拡張に合わせて線を引...
回答  hatena  - 12/11/21(水) 18:48 -

引用なし
パスワード
   >3点です。
>
>14400の方法で縦線は引けましたが、一つ一つのテキストボックスの高さを取得、比較して縦線を引く方法もありました。どちらも連続した縦線がひけるのですが、この2つは、どう使い分けるものなのでしょうか。

[AC95]の方はそのページのプレビューの画像を見てもらえばわかりますが、テキストボックスの最大高さに合わせて罫線を引きます。ですので、テキストボックスとセクションの上下に余白があれば罫線は途切れます。上下に余白がなければ、罫線は連続します。
連続していいのなら、[ACC2002]の方がシンプルなのでいいでしょう。これはセクションの最大値の高さで罫線を引くものですが、セクションの高さを超える部分は表示されないので結局セクションの高さいっぱいに引くことになります。
 
>Me.Line (0, Bottom)-(Me.Width, Bottom) '横罫線
>LineTop = 0
>で変数が定義されていないというエラーが出ました。何が足りないのでしょうか。
>またここで何をしているという意味なんでしょう。

LineTop を LineBottom に変更してください。
手元のコードをもとに編集した時に、変更し忘れたのもです。

>Line1を非可視にして、
>  LineBottom = Me.Top - Me.Printer.TopMargin + Me.Line1.Top
>とは、何をしているのでしょうか。

Me.Top でカレントレコードの上位置を取得できます。ただし、印字範囲を基準とした高さなので、それに余白設定の上余白(Me.Printer.TopMarginで取得)を加算します。印刷時拡張のテキストボックスの下に配置した直線はテキストボックスの拡張に押し出されて下に移動します。ですので、その上位置を取得すれば、セクションの高さが取得できますので、それを加算します。
これによってカレントレコードの最下部の位置が計算できます。
それをLineBottom変数に格納しておいて、ページフォーマット時に Lineメソッドでその位置に横罫線を描画します。

【12219】Re:レポートの自動拡張に合わせて線を引...
質問  tamateboko  - 12/11/22(木) 11:06 -

引用なし
パスワード
   ▼hatena さん:
丁寧なご説明ありがとうございます。

  Me.Line (0, Bottom)-(Me.Width, Bottom) '横罫線
  LineBottom = 0

にしてみたのですが、同じエラーが出ます。

Private Sub Report_Page()に入った時にエラーが出た後、
(0, Bottom)のBottomのところが反転しています。
Bottom コンパイルエラーで調べてみたのですが、わからなくて。

何の設定が足りないのでしょうか。何度もすみません。

【12220】Re:レポートの自動拡張に合わせて線を引...
回答  hatena  - 12/11/22(木) 19:40 -

引用なし
パスワード
   >  Me.Line (0, Bottom)-(Me.Width, Bottom) '横罫線
>  LineBottom = 0
>
>にしてみたのですが、同じエラーが出ます。

あっ、それもミスってました。すみません。


Me.Line (0, LineBottom)-(Me.Width, LineBottom) '横罫線

としてください。

【12221】Re:レポートの自動拡張に合わせて線を引...
お礼  tamateboko  - 12/11/23(金) 10:55 -

引用なし
パスワード
   ▼hatena さん:
動きました!!!
すごーい!感動です。ありがとうございます。
何度も丁寧に説明いただきありがとうございました。

293 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078190
(SS)C-BOARD v3.8 is Free