[[20171222104047]] 『改ページ挿入が反映されない』(Yam) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『改ページ挿入が反映されない』(Yam)

こんにちは。いつもお世話になっております。

今回、印刷設定に関連するマクロを作成しており、
表題の件で手詰まり状態なので、ご教授頂きたいです。

下記コードでは、
大元の印刷範囲を設定し、次に改ページの範囲をクリアし、
改めて一定の行毎に改ページの境界線を挿入する流れとなっています。

ActiveWindow.View = xlPageBreakPreview
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(r - 1, 23)).Address
ActiveSheet.ResetAllPageBreaks
i = 36
Do Until Cells(i, 1).Value = "" Or i / 35 > 1020

    ★ActiveSheet.HPageBreaks.Add Before:=Cells(i, 1)
    i = i + 35
Loop

最初の印刷設定の部分は問題なく動作するのですが、
その後★の部分での改ページ挿入が上手く動作せず…。
仕様なのか書き方が間違っているのかも分からない状態です。

何かお気づきの点やご指摘など、ございましたら
コメント頂ければと思います。宜しくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 うまく動作しないとはどうなるのだろうか?
 こちらで試した範囲では正しく実行されているようだが。
 一つ確認。
 A36セルから35行おきのセルには確実に値が入っているだろうか?
(ねむねむ) 2017/12/22(金) 11:05

 プログラムから見るとrで最終行を求めているようなのでセルに値が入力されているかではなくiとrを比較してループを終了させてはどうか。
(ねむねむ) 2017/12/22(金) 11:12

問題は、ループの条件ではないでしょうか? i / 35 > 1020 の方は単純なので問題ないと思いますが、Cells(i, 1).Value = "" の方は思わぬところで空欄セルがあると、そこで終わってしまいますよ。 ブレークポイントを問題行に指定してみて、正しくループしているか確認してみてください。(実はA列には全く値が入っていなかった、とか?)
(???) 2017/12/22(金) 11:17

皆様からご指摘された箇所について調べたところ、
やはりCells(i, 1).Value = ""が問題で動作していなかったようです。
該当箇所に値を入力後、マクロを走らせたら正常に動作しました!

こんな初歩的な事にも気づかなかったなんて…お恥ずかしい限りです;;

ただ今後同じミスがあることも考え、ねむねむさんが仰っていたループ条件を
Value値で判断しないような処理を入れようと思います。ありがとうございました!

また、その延長で一つお分かりになる方がいましたら教えて頂きたいのですが、
改ページの手動挿入は1026?辺りまでが限度のようですが、これを超えて設定する
方法はないのでしょうか?
調べても見つからないので、仕様だと言われてしまえばそれまでですが…。
宜しくお願いします。

(Yam) 2017/12/22(金) 11:53


https://support.office.com/ja-jp/article/Excel-%E3%81%AE%E4%BB%95%E6%A7%98%E3%81%8A%E3%82%88%E3%81%B3%E5%88%B6%E9%99%90-1672b34d-7043-467e-8e27-269d656771c3

 上記のページの改ページ部分を参照してくれ。
 まあ、仕様ということで。
(ねむねむ) 2017/12/22(金) 12:01

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.