02 スペシャルの2
前回。
本家MSJPのサイトに[XL2002]印刷されるページの総数を調べる方法を見つけたところまでお話ししましたね。
てゅうわけで、今回はその続きです。
さてこのMicrosoft提供のサンプルコードを眺めてみると。
まず、データを入力している一番右下のセルをコード側から取得できるんですね。で、それが「$A$1」(シートの一番左上)でしかもそこが空っぽなら、"印刷するデータはありません。"ってことでひとつ。ってチェックロジックが入って。
ここまではおっけー。
それから、今度は縦方向と横方向の改ページ数をカウント。なるほど、シートオブジェクトの中にその情報をきちんと持っている、と。ただし、上記サンプルを実行する前に、改ページ位置のセルを画面に表示して、改ページ位置を認識 させる必要がありますなんて注意書きがあるところを見ると、画面表示かZoomOut→ZoomInのアクションの時にセットされる情報っぽいですね。
ExcelXPでVBAコードウィンドウに貼り付けて実際にやってみると、特にそんなことに気をつけなくともちゃんと動作しました。
たまたまそれっぽい操作をやっていたのか、XPではアクショントリガが変わったのかは把握していませんが、まぁとりあえずはいいかと。
ではページいっぱいを罫線で囲んで縁取りして、行タイトル指定してあるセルにこの関数を突っ込んでだめだ。
1ページ分しか作っていないのに、4ページと表示されてしまいます。ためしに2ページ分の罫線を引いてみると6ページと表示、縦横に2ページ分ずつ(つまり正解は4ページ)になるように罫線を引いてみると、9ページとの表示になってしまいました。
ってんでもぅ一度サンプルコートを眺め直してみると。
ページのぎりぎりいっぱいまでセルを使わないのがまぁメジャーケースですので、最後の改ページ位置のさらに下側(右側)にまだデータがあるだろぅと。
だから単純に取得した改ページ数に1足しちゃえと。
Microsoftか!?
いゃほんとにMicrosoftなんですけどね。
どぅもページちょっきり下隅とか右隅とかにデータとか罫線とかがあると、その下側(右側)に改ページができちゃうみたいなんですよ。
のでこのサンプルコードは、アイデアとしてはおっけーだけれども正常に動作しない場合があるといぅことで。よって却下。
ではどぅするかといぅと、