• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBA の HPageBreaks コレクションがおかしい)

ExcelVBA の HPageBreaks コレクションが不正な挙動をする

このQ&Aのポイント
  • Excel VBA のワークシートの改ページの数を得る方法として、Worksheets(*).HPageBreaks.Count を使用していますが、その値が「標準」表示時に正しく取得できない問題が発生しています。
  • また、HPageBreaks.Extent プロパティにおいても同様の問題が発生しており、HPageBreaks コレクションの数が「標準」表示に切り替えたとたんに減少してしまいます。
  • この問題はバグの可能性も考えられますが、microsoft のサポートサイトでの検索でも該当する情報が見つかっていません。Windows95 Excel97 での問題かどうかも不明です。ご存じの方はご回答いただけますと幸いです。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

一時期、悩んだ事象です。 マイクロソフト サポート技術情報 - JP408042  [XL97] 印刷されるページの総数を調べる方法 http://support.microsoft.com/default.aspx?scid=http://www.microsoft.com/japan/support/kb/articles/JP408/0/42.asp の中に、  H_Break = Sheet1.HPageBreaks.Count '横の改ページ数取得 の記述があり、頁数が取得できるように書いてあります、しかし、この技術情報の最後に、 『注意   このプロシージャを実行する前に、改ページ位置のセルを画面に表示して、   改ページ位置を認識させる必要があります。次のいずれかの操作を 1 度実行します。    ・改ページされているセルを画面に表示    ・ZOOM で縮小したあと元に戻す    』 とあり、技術情報にあるコードを実行しただけでは正しい頁数は求められませんでした。 個人的には、  1.印刷範囲を設定し、  2.『Application.ScreenUpdating = False』は使用不可とし、  3.印刷範囲の最後の行を画面に表示した状態で、  4.HPageBreaksを使う ようにしています。 また、マイクロソフト サポート技術情報 - JP402754  [XL95] 印刷されるペ-ジの総数を調べる方法 http://support.microsoft.com/default.aspx?scid=http://www.microsoft.com/japan/support/kb/articles/JP402/7/54.asp があります。 Excel97なら、Excel4マクロの「GET.DOCUMENT(50)」を使ったほうが確実かもしれません。 ご参考に。(URLが2行になっている?お手数ですが、つなげて実行して下さい)

Takochu
質問者

お礼

ご回答、有り難うございます。 返事、遅れてすみません。 私の場合も、ほんと悩みました。 再インストールでもしようかとも思っていました。 でも、nishi6 さんのおかげで解決することができました。 本当に感謝します。 確かに、技術情報の通りに実行するだけでは、私の場合も、 正しい改ページ数が得られませんでした。 しかし、おっしゃっていた通り、 「印刷範囲の最後の行を画面に表示」で正しい値が得られました。 それから、自分でも色々試してみました。 既にご存じだとは思いますが、 分かったことは、技術情報にある、  ・改ページされているセルを画面に表示  ・ZOOM で縮小したあと元に戻す の、いずれの場合も、シート末端の改ページがウインドウに表示されれば、 正しい値が得られるようです。 また、ActiveWindow.View = xlPageBreakPreview で、 「改ページ プレビュー」にすると無条件で、 正しいページ数が得られるようです。

Takochu
質問者

補足

遅くなりました。 本当に助かりました。有り難うございました。

関連するQ&A