• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでの改ページ)

エクセルでの改ページ設定方法とVBAの記述について

このQ&Aのポイント
  • エクセルで特定の文字が現れた時に自動で改ページする方法についてです。
  • ページ数が多い場合や複数回の処理を行う場合に便利なVBAの記述方法も紹介します。
  • タイトルや要約文はSEOを意識したものとなっており、キーワードにも配慮しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

Sub test() Set wb = Workbooks("Book1") Set sh1 = wb.Sheets(1) With sh1 rmin = 1 'データcellの最小行 rmax = 1000 'データcellの最大行 pnm = 20 '1ページ最大行数 r0 = rmin c0 = 1 'データcellの列 r = r0 c = c0 n = 0 Do dd = Cells(r, c) While dd <> "D" r = r + 1 If r > rmax Then Exit Sub dd = Cells(r, c) Wend dr = r - r0 n = n + dr + 1 If n > pnm Then r = r - dr .HPageBreaks.Add Before:=.Cells(r, 1) n = 0 End If r = r + 1 r0 = r Loop While r < rmax End With End Sub これでどうですか。 データcellの最終行をデータ上から知る方法がありますか。未入力が無いデータ列とか。 自分の作業にあわせて、適当に変更してください。

alpse
質問者

お礼

回答ありがとうございます。 素晴らしいですね。仮のデータを作成しテストしてみましたが、見事に 私の望んでいる処理が実現できています。 おそらく実際のデータにも有効に処理が働くと思います。 また、未入力が無いデータ列は存在したと思います。仮にそれが (1.F)(2.F)と最終行まで続いていた場合には、どのようなコードに なるでしょうか。もしよろしければ教えてください。

その他の回答 (3)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

最大行を入力しなくてもよいようにしようとしたのですが、このままでも実際の最大行より大きい行ナンバーを余裕を持って指定(65000とか)しておけば支障ないでしょう。

alpse
質問者

お礼

そうですね。おかげさまで作業の効率が上がりそうです。 このたびはどうもありがとうございました。 大変助かりました。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

微修正 細かいことが気になるので、 初期データとして、 dd0="D" として、 while文を while dd<>dd0 にする。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

1.A,B,C,D は、どこかに入っているデータですか。 2.Dが現れるまでに1ページの最大行数を超えてしまうことは無いですか。 3.この並びの途中に未入力のセルはないですか。

alpse
質問者

補足

回答ありがとうございます。 説明を補足させていただきます。 1.ABCDはそれぞれ、下記のように現れます。  各文字の間にある列の間隔は常に一定です。  |a|b|c|d|e| 1 |()←(1.a)には直下にあるAのコードナンバーが入力されます。 2 |A 3 | ←Aの直下は空白です。 4 |()←こちらにもBのコードナンバーが入力されます。CDも同様です 5 |B 6 | 7 |() 8 |C 9 | 10|() 11|D 12| 2.Dは1ページ中には少なくとも2回以上は必ず現れます。 3.上記のように空白のセルは存在します。 以上です。よろしくお願いします。

関連するQ&A