• ベストアンサー

【エクセル】 答えの出ているところまで印刷したい

以前質問させていただいたことで、また困っています。 http://oshiete1.goo.ne.jp/qa4130343.html こういうものを作成し、皆様のおかげでみごと完成したのですが、 前回も言ったとおり、私が作ったものを別の人が使います。 それで、わかりやすい形にして渡してあげたいのですが、 このままでは印刷プレビューにすると計算式が入っているところまで 全部印刷範囲に入ってしまいます。 月によって利用する行数が違うと思うので、 改ページプレビューで固定しておくこともできないのですが どうにか計算式を無視して数値(または文字など)の入った行までだけ もしくはそれが入ったページだけを印刷することはできないでしょうか? ちなみにさらにこちらのワガママなのですが、 シートを月別に分けて、2行目(項目の次の行)に、 「前月繰越金」を表示させたいとのことで、 端の使わない列に印刷されない計算式が入っています。 たとえば、A~H列のみの、値の入っている行まで印刷~のようなことは可能でしょうか? 細かくてすみません。 もし、この細かい設定が無理なら印刷されない計算式は別シートにしますので、 値の入っている行まで自動的に印刷範囲に指定してくれる機能があったらどうか教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.3

マクロを使用して、任意の列の数値が表示されている行までを印刷範囲に指定する方法です。H列以降を印刷範囲にしない条件設定もできるようにしています。マクロの実行方法ですが、下記の順序で試してください。 1)ファイル起動 2)[Alt]+[F11]キーでVisualBasicEditor(VBE)を起動 3)VBEのプロジェクトウインドウの  VBAProject(ファイル名)  └ MicrosoftExclObject   ├ Sheet1(Sheet1)   ├ ...Sheet2,3,4   └ ThisWorkbook ←ココを右クリック>[コードの表示] 4)コードウインドウが開いたら、下記のコードを転記 '--ここからコピー Private Sub Workbook_BeforePrint(Cancel As Boolean) ' 任意の列の数値が表示されている行までを印刷範囲に指定 Dim PrLeftUpAdress As String Dim PrRightCulm As String Dim PrArea As String Dim myRow As Integer Dim PrSheet As Integer Dim myCul As String Dim i As Integer '印刷範囲で最も左上のセル PrLeftUpAdress = "$A$1" '印刷範囲で最も右の列 PrRightCulm = "H" '印刷範囲の最下段を判定する列 myCul = "D" '印刷するシート(タブ表示順で左から何番目?) PrSheet = 1 With Sheets(PrSheet)  myRow = .Range(.Cells(.Rows.Count, Range(myCul _    & 1).Column).End(xlUp).Address).Row + 1  For i = myRow To 1 Step -1    If Cells(i, Range(myCul & 1).Column) <> "" _     Then Exit For    Next i  PrArea = PrLeftUpAdress & ":$" _   & PrRightCulm & "$" & i  .PageSetup.PrintArea = ""  .PageSetup.PrintArea = PrArea End With End Sub '--ここまでコピー 5)印刷プレビューで印刷範囲が変わることを確認

pants
質問者

お礼

お礼が遅くなってしまいました。 すごく丁寧な仕事に感激しました。 明日やってみます!

その他の回答 (2)

  • Rin-u_u
  • ベストアンサー率35% (6/17)
回答No.2

印刷範囲の外のセルに(どこでもOKです) ="A1:H"&MAX((A1:H65535<>"")*(ROW(A1:A65535))) と入力し、 配列数式ですので、Ctrl + Shift + Enter で確定させます。 たとえばU1に入力したとします。 Ctrl + Shift + Enterで確定。 そのまま、挿入→名前→定義で、 名前: Print_Area 参照範囲: =INDIRECT($U$1) とします。 →印刷プレビュー

pants
質問者

お礼

お礼が遅くなってすみません。 事務所移転のためにファイルをまったくいじれていないんですが、 明日やってみます! ありがとうございました。

  • TTak
  • ベストアンサー率52% (206/389)
回答No.1

お望みの方法はVBA(マクロ)を使うことで可能です。 印刷ボタンが押されたタイミングでそのマクロを走らせ、印刷直前に、データ範囲を調べ、印刷範囲を指定するというプログラミングの記述になります。 そのシートを使用する人は、マクロ使用可能な環境でしょうか?補足願います。

pants
質問者

お礼

補足の補足です。 えーと、ちょっと言い方がえらそうかも、ごめんなさい。 ほかに必要な環境があったら教えてください。

pants
質問者

補足

現在マクロ使用可能な環境になっているかどうかはわかりませんが、 デスクは隣なので、私が使用可能な環境にすることは可能です。 確か、マクロのセキュリティで変更するのですよね? そのことをおっしゃっているなら可能です。

関連するQ&A