[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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 >
こちらでいかがでしょうか。
(じゃふ) 2021/08/26(木) 11:16
少し調べてみましたが、自動改ページに関する値の取得は一筋縄ではいかない?ようです。
下記ページ参考になりますでしょうか。
(スマホから書き込みしているため、試せておりません)
エクセルのページ区切り(点線)の位置をマクロで取得 ※印刷範囲クリア -- 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
文字だけなら以下のコードで対応できますが、
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
とおりすがりさんのコード参考になりますか?
(ぬっこ) 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.