Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


23776 / 76732 ←次へ | 前へ→

【58316】Re:改ページ
回答  りん E-MAIL  - 08/10/18(土) 17:34 -

引用なし
パスワード
   パトラッシュ さん、こんばんわ。

>>>品物が切り替わる部分で改ページを打ちたい
>これは,うまくいきます。OKです。
>
>>>同一の品物が多くなると,品物が切り替わる前のところでいちど自動的に改ページが打たれます。
>
>例えば,「品物:りんご」だけで50行くらいになったとしますよね。
>そうすると次の「品物:ばなな」に切り替わる前に1ページでは収まらないので
>「品物:りんご」の中のどこか中途半端なところで自動改ページされてしまいます。
>この自動改ページが必ずしも「品物:・・・」のところではないので,この自動改ページだけをうまくずらしたいのです。
>提示していただいた構文でもこの部分がうまくいかないのです。
早合点してました、すみません。
品物が異なる部分に手動改ページを入れて、自動改ページが入ったらそれより上の「品物」位置にあらためて改ページを追加します。

Sub test()
  Dim hpb As HPageBreak
  '
  With ActiveSheet
   With .UsedRange
     Rmax = .Cells(.Count).Row
   End With
   '
   For II& = 1 To Rmax
     '左3文字が「品物:」の時にチェック
     If Left(.Cells(II&, 1).Value, 3) = "品物:" Then
      If a1$ = "" Then
        '初回はスルー
        a1$ = .Cells(II&, 1).Value
      Else
        '品物:なんとか が一致しなければ手動改ページを入れて、入れ替え
        If a1$ <> .Cells(II&, 1).Value Then
         .HPageBreaks.Add Before:=.Cells(II&, 1)
         a1$ = .Cells(II&, 1).Value
        End If
      End If
     End If
   Next
   '自動改行がなくなるまで移動
   Application.ScreenUpdating = False 'ウィンドウを切り替えるため
   Do
     '改ページ位置再計算(エラー回避、今は不要かもしれない)
     ActiveWindow.View = xlPageBreakPreview
     ActiveWindow.View = xlNormalView
     'チェック開始
     Hflg = False
     For Each hpb In .HPageBreaks
      If hpb.Type = xlPageBreakAutomatic Then
        II& = hpb.Location.Row
        Do Until II& = 1
         If Left(.Cells(II&, 1).Value, 3) = "品物:" Then
          .HPageBreaks.Add Before:=.Cells(II&, 1)
          Hflg = True: Exit For '外側ループも抜ける
         End If
         II& = II& - 1
        Loop
      End If
     Next
   Loop While Hflg = True
   Application.ScreenUpdating = True
  End With
End Sub
こんな感じです。
1つの品物リストで1頁を超えるような場合は無限ループに入るので注意が必要です。

1 hits

【58309】改ページ パトラッシュ 08/10/17(金) 22:18 質問
【58313】Re:改ページ りん 08/10/18(土) 13:55 回答
【58315】Re:改ページ パトラッシュ 08/10/18(土) 16:03 質問
【58316】Re:改ページ りん 08/10/18(土) 17:34 回答
【58318】Re:改ページ パトラッシュ 08/10/18(土) 18:47 お礼
【58327】Re:改ページ パトラッシュ 08/10/19(日) 0:41 発言

23776 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free