質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

4回答

2292閲覧

vba改ページの最大の水平印刷位置からひとつ前のキーワードまで改ページ位置を移動する方法

OyaHiro

総合スコア7

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2016/07/08 09:15

[1] 表題
[2] 本文
[3] 表題
[4] 本文
[5] 表題
[6] 本文


という表題と本文の1セットが繰り返し入力されているデータがあり、改ページプレビューをみると


[1] 表題
[2] 本文
[3] 表題
[4] 本文
[5] 表題
------------改ページ
[6] 本文


という風に改ページ位置が自動で設定されますので、


[1] 表題
[2] 本文
[3] 表題
[4] 本文
------------改ページ
[5] 表題
[6] 本文


という風に特定のキーワードの上に改ページ位置を移動する方法

これを数十回繰り返して、なるべく多くの情報を1ページに収めたいです。
どうすればいいでしょうかご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

入力されているセルの内、
どれが表題かわかりますか?
あと、表題と本文のセルの位置関係も教えてください。

投稿2020/02/24 09:33

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

いろいろ調整必要ですが
まずは、表題の行判断できるかです。

下記は「表題」文字で判断していますが
高さが決まっている、罫線が決まっている
等どうなりますかね。?

VBA

1Sub tes() 2Dim WB As Workbook 3Dim Ws As Sheet1 4Set WB = ThisWorkbook 5Set Ws = WB.Sheets(1) 6 7Dim Vcnt As Long '現在の高さ計 8Dim Vmst As Long '一ページ分の高さ計 9Dim VcntBfo As Long 'ひとつ前の表の高さ計 10Dim MaxRow As Long 'A列の最終行 11Dim r2 As Long 'ひとつ前の表題 12 13Vmst = 702 14MaxRow = Ws.Cells(Rows.Count, 1).End(xlUp).Row 15r2 = 1 16Vcnt = 0 17Vcnt1 = 0 18 19For r = 1 To MaxRow 20 'If InStr(Cells(r, 1).Value, "表題") > 0 Then Exit For 21 If Cells(r, 1).Value = "表題" Then 22 If Vcnt + VcntBfo + Vcnt1 > Vmst Then 23 'Rows(r2).PageBreak = xlPageBreakManual '1個前の表題位置 24 Ws.Cells(r2, 1).PageBreak = xlPageBreakManual 25 End If 26 Vcnt = Vcnt + Vcnt1 27 VcntBfo = Vcnt1 28 Vcnt1 = 0 29 r2 = r 30 End If 31 Vcnt1 = Vcnt1 + Cells(r, 1).RowHeight 32Next 33 34End Sub

投稿2020/02/24 08:53

sinzou

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VPageBreaks オブジェクトというものがあるので、

  • 当該のセルが表題なのか本文なのか
  • 当該のセルが何ページ目に印刷されるのか
  • 当該のセルが表題だったときペアになる本文は同じページに含まれているか
  • 同じページに含まれていなければ改ページを挿入

みたいな処理を繰り返せばできるかもしれません
あわせてループ処理のことも考慮に入れるようにしてください

投稿2016/07/08 20:08

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

マクロの記録で
1.改ページにしたい場所を選択
2.右クリックし「改ページの挿入」
3.印刷追加したい所を選択し右クリックし「印刷範囲に追加」を選択
4.マクロの記録を終了
5.解読

投稿2016/07/08 11:21

編集2016/07/08 11:27
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OyaHiro

2016/07/08 14:38

1ページ1表題であれば即時解決しますが、表題毎にサイズが違い1ページになるべく多くの情報を収めるところで苦労しています。
退会済みユーザー

退会済みユーザー

2016/07/08 21:57

1と2と3を繰り返すマクロを組めば 出来ますよ 3はR1C1形式での指定なので RANGE(CELLS(先頭行、先頭列)、CELLS(決めたページの末端行、末端列)).ADDR で取得
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問