こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ExcelVBA の HPageBreaks コレクションがおかしい

Excel VBA で、ワークシートの改ページの数を得るのは、
Worksheets(*).HPageBreaks.Count でいいと思うのですが、
その値に、不思議なことが起きて困っています。
それは、メニューバーの「表示」に、
「標準」と「改ページ プレビュー」の切り替えがありますが、
その「標準」を選んでいる時に、正しい値が得られないのです。
HPageBreaks.Extent プロパティにも同じ症状が出ます。
要するに、HPageBreaks コレクションの数が
「標準」に切り替えたとたん、なぜか減ってしまうのです。
ちなみに、Worksheets のインデックスは間違っていません。

これは、バグか何かでしょうか?
microsoft のサポートサイトも検索してみましたが、
それらしきものは見当たりませんでした。
それとも、私の環境だけでしょうか?(Windows95 Excel97)
ご存じの方、宜しくお願いします。

投稿日時 - 2002-08-22 00:37:58

QNo.340769

困ってます

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

一時期、悩んだ事象です。

マイクロソフト サポート技術情報 - 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行になっている?お手数ですが、つなげて実行して下さい)

投稿日時 - 2002-08-22 01:57:30

補足

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

投稿日時 - 2002-08-29 19:08:51

お礼

ご回答、有り難うございます。
返事、遅れてすみません。

私の場合も、ほんと悩みました。
再インストールでもしようかとも思っていました。
でも、nishi6 さんのおかげで解決することができました。
本当に感謝します。

確かに、技術情報の通りに実行するだけでは、私の場合も、
正しい改ページ数が得られませんでした。
しかし、おっしゃっていた通り、
「印刷範囲の最後の行を画面に表示」で正しい値が得られました。

それから、自分でも色々試してみました。
既にご存じだとは思いますが、
分かったことは、技術情報にある、
 ・改ページされているセルを画面に表示
 ・ZOOM で縮小したあと元に戻す
の、いずれの場合も、シート末端の改ページがウインドウに表示されれば、
正しい値が得られるようです。

また、ActiveWindow.View = xlPageBreakPreview で、
「改ページ プレビュー」にすると無条件で、
正しいページ数が得られるようです。

投稿日時 - 2002-08-24 02:32:47

ANo.1

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問