• ベストアンサー

Excelについて。特定の範囲内で自動的に改ページされることを禁止する

Excelについて。特定の範囲内で自動的に改ページされることを禁止するにはどうすればよいのでしょうか? たとえば、「10行目から13行目の間では改ページしない」という設定はできないものでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

No2-3です。 > 改ページ位置を調べ、各ページごとに改ページの位置を調節するマクロを書くことは可能ですが、しくみが複雑になってしまいます。 > そこで、各商品の紹介の範囲には改ページが入らないように設定することはできないのかと思い、質問したわけです。 特定の範囲に自動改ページが入らないようにするという設定はないと思います。 自動改ページが入った行が「商品の紹介」の部分なのかそうでないのかをなんらかの方法で判定することができれば、その直前に強制改ページを入れるなどのマクロで対処できると思いますが、こちらではどのように作成されたシートか全然わかりませんので答えようがありません。 また、仮に判定ができて強制改ページすると、それ以降の自動改ページ位置が変わってしまいますので、再帰処理なども必要になります。 しくみが複雑になるのはしょうがないと思います。

vorakerd
質問者

お礼

どうもありがとうございます。 機能が「ある」という情報は、調べれば見つかることが多いのですが、「ない」という情報は調べても見つけられないことが多々あります。 ですので、「ない」ということが分かり大変助かりました。 別の方法を検討したいと思います。

その他の回答 (3)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> ある範囲が複数ページにまたがってしまう場合は改ページをし、そのまま一つのページ内に収まる場合はそのまま改ページせずに印刷するというような設定をしたいのです 改ページしたくない行はシートによってことなるってことですか? それなら、設問の「10行目から13行目の間では改ページしない」ではないですね。 ある範囲とはなんなのかをお書きにならないと誰も回答できないと思います。

vorakerd
質問者

補足

> それなら、設問の「10行目から13行目の間では改ページしない」ではないですね。 これは一つの例として挙げました。 確かに分かりにくいかもしれませんので、もう少し分かりやすい具体例を挙げたいと思います。 Excelを使って、商品の一覧を作っているとします。 一つの商品の紹介は、複数行に渡ります。 一つのシートで多数の商品を行う場合、一ページでは収まり切らなくなるので、当然途中で改ページが必要になります。 では、どこに改ページを入れるか、それが問題です。 一つの商品の紹介が2ページにまたがることは避けたい。しかし、それぞれのページは有効に使いたいのです。 手作業であれば、ページの変わり目に改ページを設定すれば全て解決します。 しかし、マクロで外部のデータベースからデータを取得して商品一覧を自動生成する場合には、どこに改ページが入るか分かりません。 もちろん、改ページ位置を調べ、各ページごとに改ページの位置を調節するマクロを書くことは可能ですが、しくみが複雑になってしまいます。 そこで、各商品の紹介の範囲には改ページが入らないように設定することはできないのかと思い、質問したわけです。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

どうもよくわかりません。 改ページさせたくない場所が10~13行と決まっているのであれば、マクロでシートを自動生成するときにActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Range("A10")とかで強制改ページを入れればいいんじゃないでしょうか? どうしても印刷時にいれたければ、Thisworkbookに Private Sub Workbook_BeforePrint(Cancel As Boolean)   Dim H As HPageBreak   With ActiveSheet     .ResetAllPageBreaks     ActiveWindow.View = xlPageBreakPreview     For Each H In .HPageBreaks       If H.Location.Row >= 10 And H.Location.Row <= 13 Then ' 10~13行に改ページ行があれば         .HPageBreaks.Add Before:=.Cells(10, "A") '9行目に強制改ページする。         Exit For       End If     Next H   End With   ActiveWindow.View = xlNormalView End Sub かなあ。(^∇^)?

vorakerd
質問者

補足

強制改ページを入れると、前のページにまだたくさん余白が残っていた場合、その部分のスペースが無駄になると思います。 ある範囲が複数ページにまたがってしまう場合は改ページをし、そのまま一つのページ内に収まる場合はそのまま改ページせずに印刷するというような設定をしたいのです。

noname#164823
noname#164823
回答No.1

改ページを禁止する、などと複雑に考えなくても、単純に 改ページしたくない所、つまり強制的に改ページする箇所 を決めておけばいいのですよね。 例えば、13行目で改ページされたくなければ、その下の14行目の「行見出し」を 選択して、「挿入」→「改ページ」をクリックすれば、14行目から2ページに なります。 解除するときは、同じ行を選択して、「挿入」→「改ページの解除」で できます。 因みに、1つのセルを選択して、同様のコマンドを掛ければ、その前後左右で 改ページできます。

vorakerd
質問者

お礼

すみません、補足の補足です。 補足で「改行」と書いてあるのは「改ページ」と読み替えてください。 失礼いたしました。

vorakerd
質問者

補足

マクロを使って大量のシートを自動生成しようとしています。 手作業ではなく自動生成なので、どこに改行を入れるのが適切かは生成してみるまで分かりません。 ただ、改行を入れてはいけない部分は分かっているので、それを指定することができればよいと思ったのですが。 LaTeXでは改ページのルールは細かく指定できますが、Excelは無理なのでしょうかね・・・。 あと、申し遅れましたがExcelのバージョンは2007です。

関連するQ&A