dポイントプレゼントキャンペーン実施中!

以前教えていただいたコードです。C列、D列、E列が全て共通の行を結合していきます。

For I = Cells(Rows.Count,"A").End(xlUp).Row To 2 Step -1
If Cells(I,"C") = Cells(I-1,"C) And_ ...以下D、E列についても同様に記述

Then

Application.DisplayAlerts = False
Range(Cells(I-1, "B"),Cells(I,"B")).Merge ...以下D、E列についても同様に記述

Application.DisplayAlerts = True

End If
Next I

この条件分岐の中で、「改ページをまたぐ時はセル結合をしない」という条件を加えたいです。
「HPageBreaksがある/ない」を判断させることはできますでしょうか。
よろしくお願いします。

A 回答 (1件)

こんにちは



>改ページをまたぐ時はセル結合をしない~~
マクロ実行時には処理が可能ですが、その後、セルの高さが変わるような操作あるいはマクロを実行すると、結果的に「改ページをまたぐセル結合」になってしまう可能性もあると思いますが・・・?
それとも定型書式で改ページ位置は変わらないタイプのものなのでしょうか?

とりあえず、方法のみ。
>「HPageBreaksがある/ない」を判断させることはできますでしょうか
HPageBreaksは
 Worksheet.HPageBreaks
で取得できます(複数)ので、結合時に各改ページにまたがっていないことを確認する処理を入れれば良いでしょう。

 Worksheet.HPageBreaks.Count
で、改ページの箇所数がわかりますし、それぞれの改ページのセル位置は
 Worksheet.HPageBreaks(i).Location.Address
で取得できます。
判断材料として行番号さえわかれば良さそうですので、AddressよりもLocation.Rowで取得した方が処理しやすいと思われます。

結合が、
>Range(Cells(I-1, "B"),Cells(I,"B")).Merge ...
・・・のように、必ず2つのセルを対象に行うようになっているのであるなら、上記の行番号と変数Iが一致していたら結合を行わないようにしておけば良いのではないでしょうか。
(全貌がわからないので、はっきりとはしませんが・・・)

ただし、上記の処理だけでは、既に(なんらかの理由で)改ページをまたぐセル結合がある場合に、それを解除したりすることはできません。(新たに生み出さないだけです)
上記を応用すれば、解除することも可能ではありますが・・・
    • good
    • 0
この回答へのお礼

回答いただき、ありがとうございました!
定型書式の意味するところが私の想像ですが、列幅・行高は変えませんので、定型書式と言っていいと思います。
参考になりました。ありがとうございました。

お礼日時:2017/08/09 17:40

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

このQ&Aを見た人はこんなQ&Aも見ています