- 締切済み
エクセル 最終ページフッターに合計を表示
エクセル2002を使用しております。 印刷最終ページにのみ合計を表示する方法を教えて下さい。 全部のページのフッターに合計を表示することはできましたが、最終ページのみに表示する方法で行き詰まっています。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#1のお礼に関して。 2度言いたくないが、判ってくれてないようだ。 >if ページ番号=合計ページ数 then '←ここわかりません #1で、これが難しいといっているのです。 ページ番号 合計ページ数 のうち後者は何とか、複雑とか、時代遅れの関数でよければ判る。 しかしBeforePageChangeイベントのようなものがエクセルVBAに無い以上 ページ番号は捉えられないと、私はいっている。 エクセルVBAに無い、というよりもプリンターとの対話が無いのだと思う。会話の無い主人と召使のようなもので、「これを印刷せよ」とデータを渡すと、プリンタが障害がなければ、途中経過の今何ページ目を印刷しました、などの報告がその都度、主人に来ないということを言っている。 ーー PrintOutメソッドのオブジェクトは、シートかRangeなどだ。これの深い意味を意識したことがありますか。それと関連する。 ーー もしどうしてもやるなら、PageBreak位置の行などを順次割り出し (しかも水平、垂直両方考える必要があり複雑)1ページ分のRangeに対してだけPageSetUpとPrintOutを自分で発行する、そしてページ数だけ印刷範囲を変えて、繰り返すと出来るかもしれない。 そうすれば今何ページ目を印刷しているか自分で計算できるので、これから印刷する1ページに当たる部分が、上記で求めた印刷総ページ数(=最終ページ)と一致するかIFで判定できるだろう。 難しいこと複雑なことを >できるだけその方法は使いたくありません の一言のもとに、回答者に回答してもらうというのはどうかな? 上記で述べた「考え方の道筋のヒント」を基に自作したら。 ついでに言うと、その場合は ActiveSheet.PageSetupのようにActiveSheet.ではなくなる。 今までActiveSheet.PageSetupばかり意識せず、使っていたのでしょう。
- imogasi
- ベストアンサー率27% (4737/17069)
質問の内容説明不足では。 「合計」はセルに有る(出ている)のかな。定位置のセルかな。合計セル位置が都度変わるのかな。 ーー http://miyahorinn.fc2web.com/tips/s_07_08.html の最初に述べられているように 「セルの値をヘッダーやフッターに設定することは出来ないので・・」で操作では難しく、VBAでやらざるを得ないようだ。 VBAの経験・知識は有るのかな。 >最終ページ これも1語のメソッドやプロパティでは求められないようで、 http://okwave.jp/qa311847.html に回答が有るように、自分でプログラムしてPageBreak数をVBAで勘定しないとならないようだ。 ただし下記WEBにApplication.ExecuteExcel4Macro("get.document(50)") の回答が有るがExcel4Macroは時代後れなので??? そして、これから印刷するページが最終ページかどうかもVBAで掴みにくいと思う(やや不確か。というのも、プリンタが各ページを印刷し終わったときプリンタ側から、エクセルへ信号が返る仕組みでは無いと思うから) だから最終ページの印刷前のタイミングを捉えてPageSetUpプロパティの内容を改変できないと思う。 参考 http://questionbox.jp.msn.com/qa1891228.html ーーー むしろシート上のセルにおいて、最終データ行の後に、合計セルを設け、そこに合計をセットするで我慢しなければならないのではと思う。(普通は奏していると思う。データ最下行に合計が出ている。むしろ各ページに小計とともに合計を出したいニーズが有るかも)
お礼
有り難うございます。 VBAの経験は、あまりありません。access等で若干なら使う程度。exelのVBAは初めてです。 現在の設定は Private Sub Workbook_BeforePrint(Cancel As Boolean) ActiveSheet.PageSetup.RightFooter = Range("L6").Value End Sub としています。 これに Private Sub Workbook_BeforePrint(Cancel As Boolean) if ページ番号=合計ページ数 then '←ここわかりません。 ActiveSheet.PageSetup.RightFooter = Range("L6").Value else ActiveSheet.PageSetup.RightFooter ="" endif End Sub こんな感じで可能ではないのでしょうか? 実際に作成する物は、棚卸し表です。私が作成したシートに各部署で、入力するというもの。行数がその都度変化するし、最後尾に合計、sumとしてもよいのですが、できるだけその方法は使いたくありません。