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

エクセルで現金出納簿のたぐいを作製印刷するときに、前ページの最下行に「次葉へ繰越」および「繰越金額」、ならびに次ページの最上欄に「前葉から繰越」と「繰越金額」を入れる方法を教えてください。

A 回答 (2件)

#01です。

「あきらめてください」ではあんまりなのでマクロのサンプルを書いてみました。マクロ2~3行目の条件さえ直せばそこそこ動くはずです。印刷用ですから元の台帳となるシートをコピーして加工していますので、元データは変更しません。

こんなシートを想定しています
A列=日付、B列=費目、明細、C列=入金、D列=支出、E列=残高
まずは上記のシートを評価用に作ってください。なおE列の金額欄は「途中の行に空白がない」ものとしています。
(この列が空白の行で処理を終わるようにしているため)

以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。

Sub Macro3()
Const colK As String = "E" '繰り越し金額の列
Const colM As String = "B" '費目の列
Dim idx As Long
  idx = 1
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
  ActiveSheet.Copy after:=ActiveSheet
  On Error GoTo err0
  Do Until Cells(idx, colK).Value = ""
    If Rows(idx + 1).PageBreak <> xlPageBreakNone _
      And Cells(idx + 1, colK) <> "" Then
      Cells(idx, colK).Resize(2).EntireRow.Insert
      Cells(idx, colM).Value = "次葉へ繰り越し"
      Cells(idx, colK).Value = Cells(idx - 1, colK).Value
      Cells(idx + 1, colM).Value = "前葉から繰り越し"
      Cells(idx + 1, colK).Value = Cells(idx - 1, colK).Value
    End If
    idx = idx + 1
  Loop
err0:
  Application.Calculation = xlCalculationAutomatic
  Application.ScreenUpdating = True
End Sub

実際のシートで試すならマクロ2行目(残高の列)、3行目(費目の列)は修正してください。
    • good
    • 0
この回答へのお礼

ありがとうございました。「あきらめて下さい」で極めて困難であることが分かりました。加えてマクロのサンプルまでご教授いただきありがとうございます。
今日明日と時間がありますので、勉強も兼ねて今からトライしてみます。
お礼申し上げます。

お礼日時:2008/02/27 09:26

エクセルのワークシート関数では「改ページ」を検出することができませんし、シートに「次葉へ繰越」「前葉から繰越」のための行を挿入することもできません。



従ってどうしてもマクロで処理する必要があります。
でも質問に書かれたないようでマクロを書いても、具体的なシートにあわせてマクロの修正が必要になりますが、junmatsu11さんはVBAはさわれますか?

「マクロはダメ」ならあきらめるしかありません。
マクロをある程度ご存じなら、
 If Rows(i).PageBreak <> xlPageBreakNone Then
で改ページを判定できますから、挑戦してみてください。
    • good
    • 0

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