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

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

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

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

Q&A

解決済

3回答

2728閲覧

VBAで90列ごとに改ページをする方法について

wasabiosushi

総合スコア8

VBA

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

0グッド

0クリップ

投稿2017/08/15 04:25

VBAの改ページについて質問です。
アクティブシートに90列ごとに改ページを挿入したいです。

現在このコードで400エラーが出てしまい、
74列目で改ページが挟まれてしまうのですが、どうしたら良いのでしょうか。

VBA

1Private Sub Worksheet_SelectionChange(ByVal Target As Range) 2Dim i As Long 3Dim e As Long 4i = Range("A65536").End(xlUp).Row 5ActiveSheet.ResetAllPageBreaks 6 7For e = 1 To i Step 90 8 ActiveSheet.HPageBreaks.Add Before:=Cells(e, 1) 9Next 10 11ActiveWindow.View = xlPageBreakPreview 12End Sub

初歩的な質問だとは思いますが、どうぞよろしくお願い致します。

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

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

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

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

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

guest

回答3

0

HPageBreaks.Add の引数 Before に渡す Range オブジェクトは、1列目は指定できないようです。
90列ごとに改行を入れるならば、変数 e に入れている初期値を 1 から 90 に変更することで、処理は流れると思います。

一応、以下に示すマクロは動きましたが、sugar_yas さんの言うとおり、印刷範囲を指定していないため、9列ごとに改行が入っています。

vba

1 2'' 使い方 3'' Worksheet_SelectionChange "Sheet2" 4Public Sub Worksheet_SelectionChange(wsName As String) 5Dim i As Long 6Dim e As Long 7 8'' 列方向のループの最大値に、行の最大を取っている。 9'i = Range("A65536").End(xlUp).Row 10i = 65536 11 12'ActiveSheet.ResetAllPageBreaks 13ThisWorkbook.Worksheets(1).ResetAllPageBreaks 14 15' e の初期値を 90 に変更。 16For e = 90 To i Step 90 17 With ThisWorkbook.Worksheets(wsName) 18 19 ' Range 指定する場合はこちら。 20 '.HPageBreaks.Add .Range(.Cells(e, 1), .Cells(e, 1)) 21 .HPageBreaks.Add .Cells(e, 1) 22 23 End With 24Next 25 26 27ActiveWindow.View = xlPageBreakPreview 28 29End Sub 30

投稿2017/08/15 05:01

tukuroku

総合スコア234

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

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

wasabiosushi

2017/08/18 02:19

ご回答ありがとうございます。皆様に頂いたご回答を元に、完璧ではないですが使えるマクロを作ることができました。とても助かりました。本当にありがとうございました。
guest

0

ベストアンサー

下記のソースで実行したところ、とりあえずは10行ごとに改ページする事に成功しました。
e = 1となっている場所で、恐らく1行目の前に改ページを入れようとしたためにエラーとなっている様に見えます。

74列目で改ページが挟まれてしまう

ですが、もしかしたら印刷可能な範囲を超えているのかもしれません。
私の場合は行の高さを狭くすることで、90行ごとの改行にも成功しました。

Sub ボタン1_Click() Dim i As Long Dim e As Long RowCount = Range("A65536").End(xlUp).Row ActiveSheet.ResetAllPageBreaks '10行ごとに改ページを挿入(90の場合は、iの初期値を91でSTEP 90とすればOK) For i = 11 To RowCount Step 10 '改ページを挿入 ActiveSheet.HPageBreaks.Add Before:=Cells(i, 1) Next ActiveWindow.View = xlPageBreakPreview End Sub

投稿2017/08/15 04:49

motuo

総合スコア3027

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

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

wasabiosushi

2017/08/18 02:20

ご回答ありがとうございます。皆様に頂いたご回答を元に、完璧ではないですが使えるマクロを作ることができました。とても助かりました。本当にありがとうございました。
guest

0

全然、試してませんが
msdn
を見た感じでは、先に印刷範囲を設定しないとダメのように見受けられます。

投稿2017/08/15 04:40

sugar_yas

総合スコア135

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

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

wasabiosushi

2017/08/18 02:20

ご回答ありがとうございます。皆様に頂いたご回答を元に、完璧ではないですが使えるマクロを作ることができました。とても助かりました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問