• 締切済み

エクセルで垂直改ページ位置を調節したい

お世話になります。 エクセル2010を使用しております。 早速ですが、あるページを垂直方向には改ページせず、水平方向にのみ 自動で改ページさせて印刷したいと考えております。 何もせずに印刷を行うと、垂直方向に自動で改ページが入ってしまうので、 before_printで印刷前に垂直方向の改ページを削除した上で、改めて 印刷範囲の右側に垂直改ページを設定したいと思い、以下のような コードを書きました。 Private Sub Workbook_BeforePrint(Cancel As Boolean) For Each sht In ThisWorkbook.Worksheets sht.PageSetup.PrintArea = "$A$1:$H$400" For i = 1 To sht.VPageBreaks.Count sht.VPageBreaks(i).Delete Next i sht.VPageBreaks.Add sht.Range("H1") next End Sub 各シートのA1~H400までを印刷範囲とし、HとI列の間に垂直改ページを入れたいと 考えています、 ところがsht.VPageBreaks(i).Deleteで実行時エラー1004が発生してしまうことがあります。 原因が不明であるためどうにも解決方法がわからず、大変困っております。 解決方法をご教授いただければ幸いです。 以上、よろしくお願いいたします。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

with worksheets(番号).pagesetup  .printarea = "$A$1:$H$400"  .fittopageswide = 1  .fittopagestall = false end with としてみます。 #マクロ以前にエクセルの操作として 1.印刷範囲を設定する 2.ページ設定ダイアログで「次のページに合わせて印刷 横1ページ×縦指定しない」で設定する という具合にします。 実際に手動で操作して、結果を確認してみて下さい。 #参考 >ところがsht.VPageBreaks(i).Deleteで実行時エラー1004が発生してしまうことがあります。 その手のことをするときは for i = sht.VPageBreaks.Count to 1 step -1 のようにカウントダウンで行います。

misshiki
質問者

補足

ご回答ありがとうございます! > with worksheets(番号).pagesetup >  .printarea = "$A$1:$H$400" >  .fittopageswide = 1 >  .fittopagestall = false > end with > > としてみます。 試してみたのですが、垂直改ページが入ってしまいました。 なぜマクロでの指示が無視されてしまうのか不明です。 ちなみに手動で操作した場合には、垂直改ページを行わずに印刷することができます。 しかしマクロで行うとうまくいかない感じです。 どうも不安定な動きなのが気になります・・・

関連するQ&A