プロが教えるわが家の防犯対策術!

お家賃の請求書を作りたいと思っています。
シート2にデータを入力し、シート3で差込印刷をしようと考えています。

一人で、数部屋借りてくださっている場合は、室ごとに明細を付けたいのですが、どのようにしたらよいかわかりません。
項目の列のセルに、データ(数値=料金)があるときは印刷して、データが無いときは詰めて印刷をさせたいです。
電話料金の請求書で、複数契約している場合、オプション契約している場合していない場合などで行が印字されていたりしなかったりしますのでそのようになればスマートかなと思います。

別フォーム(印刷屋さんに注文しているフォーム)で印刷するマクロは作成できたのですが、これに手を加える事で、添付画像のように出来るようでしたら教えていただけませんでしょうか。


Sub 印刷()

Dim ws As Worksheet

Dim i As Integer

If MsgBox("印刷します。", _
vbQuestion + vbYesNo, "連続印刷") <> vbYes Then Exit Sub

i = 2

With Worksheets("集計")

Do While .Cells(i, 2).Value <> "" 'B列のi行が空白では無い場合に処理を実行する。

If .Cells(i, 1).Value = 1 Then 'A列に1が入っていたら印刷する。

Set ws = Worksheets("差込")

'差込先:差込元の形式で指定する。
ws.Range("B1").Value = .Cells(i, 7).Value '郵便番号
ws.Range("B2").Value = .Cells(i, 8).Value '住所1
ws.Range("B3").Value = .Cells(i, 9).Value '住所2
ws.Range("B4").Value = .Cells(i, 10).Value '住所3

ws.Range("B6").Value = .Cells(i, 5).Value '名フル
ws.Range("N6").Value = .Cells(i, 6).Value '敬称


ws.Range("AH3").Value = Format(Worksheets("HOME").Range("B5").Value) '発行日"年"
ws.Range("AJ3").Value = Format(Worksheets("HOME").Range("B6").Value) '発行日"月"
ws.Range("AL3").Value = Format(Worksheets("HOME").Range("B7").Value) '発行日"日"
ws.Range("P7").Value = Format(Worksheets("HOME").Range("B2").Value) '請求"年"
ws.Range("S7").Value = Format(Worksheets("HOME").Range("B3").Value) '請求"月"
ws.Range("W19").Value = Format(Worksheets("HOME").Range("B14").Value) 'その他空欄
ws.Range("W20").Value = Format(Worksheets("HOME").Range("B15").Value) 'その他空欄

ws.Range("B11").Value = .Cells(i, 2).Value '室番
ws.Range("F11").Value = .Cells(i, 12).Value '室料翌月
ws.Range("L11").Value = .Cells(i, 11).Value '室料当月

ws.Range("R11").Value = .Cells(i, 32).Value '附帯料計
ws.Range("X11").Value = .Cells(i, 33).Value '賃附合計
ws.Range("AE11").Value = .Cells(i, 39).Value '消費税等
ws.Range("AK11").Value = .Cells(i, 40).Value 'ご請求金額合計

ws.Range("B17").Value = .Cells(i, 13).Value '共益費

ws.Range("G17").Value = .Cells(i, 16).Value '電気Kw
ws.Range("G18").Value = .Cells(i, 14).Value '電気金額

ws.Range("M17").Value = .Cells(i, 19).Value '冷暖電気Kw
ws.Range("M18").Value = .Cells(i, 17).Value '冷暖電気料金
ws.Range("R17").Value = .Cells(i, 22).Value '冷暖ガスm3
ws.Range("R18").Value = .Cells(i, 20).Value '冷暖ガス料金

ws.Range("W17").Value = .Cells(i, 25).Value '水道m3
ws.Range("W18").Value = .Cells(i, 23).Value '水道料金
ws.Range("B21").Value = .Cells(i, 26).Value '貸金庫料
ws.Range("G21").Value = .Cells(i, 27).Value '工事料
ws.Range("L21").Value = .Cells(i, 28).Value '看板料

ws.Range("R21").Value = .Cells(i, 29).Value '特別料

ws.Range("AD14").Value = .Cells(i, 34).Value '摘要"1
ws.Range("AD15").Value = .Cells(i, 35).Value '摘要"2
ws.Range("AD16").Value = .Cells(i, 36).Value '摘要"3
ws.Range("AD17").Value = .Cells(i, 37).Value '摘要"4

'印刷する
Worksheets("差込").PrintOut


End If

i = i + 1 'iに1を足して次の行へ移動する。

Loop


End With

End Sub

質問者からの補足コメント

  • http://s1.gazo.cc/up/217578.jpg このようにしたいのですが、明細部分の印刷方法で悩んでいます。

      補足日時:2016/10/26 12:10
  • やりたい事がうまく説明が出来なかったのでこの質問はなかったことにしてください。ありがとうございました。

      補足日時:2016/11/01 12:27

A 回答 (1件)

こんばんは


画像見れないですよー
で、すみません、読解力が足りないのですが、隠したいのは
列ですか?行ですか?

何れでも、できる方法としては印刷前にセルが空白か確認して、その列なら幅を、行なら高さを 0 にすればよいと思います。
空白セルかどうか判定してから
Columns(1).ColumnWidth=0
とか
Rows(1).RowHeight=0

行を隠すなら、オートフィルタを設定する方法がありますね。
繰り返し処理が不要なので、楽かもしれません。
http://officetanaka.net/excel/vba/tips/tips155.htm
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!