[[20210826105448]] 『VBAで改ページプレビュー青枠内最下端を取得したax(snow) ページの最後に飛ぶ

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

 

『VBAで改ページプレビュー青枠内最下端を取得したい』(snow)

今、[表示]-[改ページプレビュー]で青枠内最下端の行が73です。
これをVBAで取得したいです。
以下のコードを試しましたが、73が取得できません。
どのようにすれば取得可能でしょうか。


    Debug.Print ActiveSheet.PageSetup.PrintArea
    Debug.Print ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea).Rows.Count
    Debug.Print ActiveSheet.UsedRange.Rows.Count

 $A:$J
 1048576 
 120 

< 使用 Excel:Excel2016、使用 OS:Windows10 >


Debug.Print ActiveSheet.HPageBreaks(1).Location.Row - 1

こちらでいかがでしょうか。
(じゃふ) 2021/08/26(木) 11:16


ご回答ありがとうございます。
以下のダイアログが出て、取れないようです。

実行時エラー '9';
インデックスが有効範囲にありません。
(snow) 2021/08/26(木) 11:48

ごめんなさい、質問者さんの状況を早とちりしていました。
手動で設定された改ページの青線ではなく、自動で表示されるものということですね。
それですと前掲の方法は使えませんので、撤回致します。

少し調べてみましたが、自動改ページに関する値の取得は一筋縄ではいかない?ようです。
下記ページ参考になりますでしょうか。
(スマホから書き込みしているため、試せておりません)

エクセルのページ区切り(点線)の位置をマクロで取得 ※印刷範囲クリア -- Excel(エクセル) | 教えて!goo
https://oshiete.goo.ne.jp/qa/9279011.html
(じゃふ) 2021/08/26(木) 12:30


じゃふさん、ありがとうございます。

改ページの設定には手動と自動があるんですね。
取得できる場合とできない場合の違いは何だろうかと思っていました。

教えていただいたサイトのおかげで、一筋縄ではいかなそうなことがわかりました。
別の行位置を取るか、運用で逃げるか、どうするのが良いか検討したいと思います。

(snow) 2021/08/26(木) 12:59


少しでもお手伝いできたなら良かったです。
調べてみて、わたし自身も勉強になりました!

もしまだご覧になられているようでしたら、取得した数字を使って何をしたかったか、教えていただけませんか?
何か別のアプローチをご提案できるかも…わたしができなくても、他のどなたかご提案くださるかも…しれないので。
(じゃふ) 2021/08/26(木) 13:35


旧verBookから新verBookの同名シートへ転記をしています。
基本的には手動で印刷範囲が設定されているようですが、
設定されてないこともあります。

文字だけなら以下のコードで対応できますが、

 excelSheet.Cells(excelSheet.Rows.Count, i).End(xlUp)

印刷範囲に図が含まれていることもあり、
印刷範囲内の最下端行を取得したいと質問をしました。

(snow) 2021/08/26(木) 15:41


なるほど、ちょっと見えてきました。
以下、状況を整理してみます。

最初の質問に記載されている実験結果を参照しますと、問題のシートの印刷範囲設定は
1)A列からJ列まで
2)行はシートの最大まで(=指定なし)
となっているはずです。
そのうえで、Excelが印刷対象のある範囲を「自動で」設定してくれているので、改ページプレビューで見るとあたかも行にも印刷範囲が設定してある「ように見える」、ということではないかと思います。

つまり、実は問題のシートの表示最終行を取得する必要はなく、列のみ印刷範囲設定してあげれば済む…ということはありませんか?
(じゃふ) 2021/08/26(木) 16:47


以下のような背景があり、最終行が欲しいです。

Bookシートは下部に記入欄があり最終行は変動する。
旧verBookシートから新verBookシートへは以下のようにコピーしている。

 旧verBookシート.記入欄範囲.Copy 新verBookシート.コピー先セル

※コピー先セルは基本的に新verBookシートの記入欄範囲左上セルだが、
追記する場合もあり、記入欄範囲左上セルとは限らない。

印刷範囲外にメモ図形などがあってもコピー対象外である。
ユーザは改ページプレビューの見た目が期待通りなら、
印刷範囲の手動設定をせずに自動設定のままにしている(と思われる)。
(snow) 2021/08/26(木) 18:24


[[20210823225729]]

とおりすがりさんのコード参考になりますか?
(ぬっこ) 2021/08/26(木) 18:39


>追記する場合もあり、記入欄範囲左上セルとは限らない
追記した場合でも、列全体での指定をしている場合、自動で行の印刷範囲は広がりませんか?
それとも、自動で広がるのは問題がある、ということでしょうか。

>印刷範囲外にメモ図形などがあってもコピー対象外である
ごめんなさい、これについては表示最終行取得との関係性が理解できませんでした。

>ユーザは〜
これは、「新verBookを利用して印刷する人」の意味ですか?
それとも、「旧verBookを作成した人」の意味でしょうか。
(じゃふ) 2021/08/27(金) 07:31


コメント返信:

[ 一覧(最新更新順) ]


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