[[20230201130929]] 『改ページの自動調整』(みやび) ページの最後に飛ぶ

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

 

『改ページの自動調整』(みやび)

例えば以下のようなデータがあるとします。

りんご  個数
青森   10
岩手    9
秋田    5



みかん
青森   13
岩手   10
秋田    7



このように多種品目ごとに各都道府県が記載されているデータがあり、
自動で改ページを設定すると

りんご  個数
青森   10
岩手    9
秋田    5



みかん
青森   13
岩手   10


秋田    7



の様になります。
この改ページを品目の位置まで毎回手作業で変更しているのですが、
出来ればマクロで、例えば個数が入力されていない直近のセルの上の行で
改ページする。

のような動作をさせたいです。
宜しくお願い致します。

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


 自分で作る意志はありますか?
 それともまるっと作ってもらいたいですか?

 あなたは後輩に仕事のやり方を質問されたら、全部やってあげるタイプですか?
(´・ω・`) 2023/02/01(水) 13:48:48

戯れに作成していたらアクティブウィンドウよりも下の改ページでエラーが発生したので面倒でした。

 Sub Sample()
   Dim sh As Worksheet
   Dim HPB_Range As Range 
   Dim prvRow As Long
   Dim i As Long

   prvRow = 1              '1ページ目の先頭行を登録
   Set sh = ActiveSheet
   sh.ResetAllPageBreaks   '先にすでにある改ページを全部消しておく
   'アクティブウィンドウよりも下側の改ページを指定するとエラーになるので先に最下部をアクティブにする
   Intersect(sh.Columns(1), sh.UsedRange.SpecialCells(xlCellTypeLastCell).EntireRow).Activate
   Do
     i = i + 1
     If i > sh.HPageBreaks.Count Then Exit Do
     With sh.HPageBreaks(i).Location
       '先頭行と前ページ最終行がともに空白でない場合で
       'その一かたまりのセルの先頭行が前のページの先頭行よりも大きい(下行にある)場合に
       '(一かたまりがページ最大行より大きい場合に改ページを挿入しない)
       If .Value <> "" And .Offset(-1).Value <> "" And .End(xlUp).Row > prvRow Then
         sh.HPageBreaks.Add .End(xlUp)       '改ページを挿入
         prvRow = .End(xlUp).Row             '改ページ挿入行を変数に入れる
       Else
         prvRow = .Row                       '改ページ挿入しない場合はページ先頭行を変数に入れる
       End If
     End With
     Set HPB_Range = Nothing
    Loop
    sh.Range("A1").Activate
  End Sub
(お邪魔します) 2023/02/01(水) 16:11:39

コメント返信:

[ 一覧(最新更新順) ]


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