• ベストアンサー

エクセルマクロで改ページプレビュー

お世話になります。 Sub 行挿入() For r = 3 To 50 If Len(Cells(r, 2)) = 13 Then Sheets("sheet2").Select Rows("1:55").Select Selection.Copy Rows("56:56").Select Selection.Insert Sheets("sheet1").Select End If Next End Sub というコードを書いたのですが、「End If」の前に(r-1)ページ目として印刷範囲を55行追加する、というコードを考えたのですがうまくいきません。教えていただけないでしょうか。

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

  • ベストアンサー
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.1

こんにちは。 ご質問のタイトルと内容が微妙に違うようですが? ご提示のコードを見る限り、 Sheets("sheet1")のB3:B50をLoopして、文字列の長さが13だったら Sheets("sheet2")の1行目から55行目までを56行目の前に挿入コピーする。という解釈で良いですか? その場合、先のLoopでコピー回数を調べて、まとめて追加する...感じに変えて Sub test()   Dim rng As Range   Dim i  As Long      For Each rng In Sheets("sheet1").Range("B3:B50")     If Len(rng.Value) = 13 Then i = i + 1   Next rng   If i > 0 Then     With Sheets("sheet2")       .Rows("1:55").Copy       .Rows("56").Resize(i * 55).Insert       Application.CutCopyMode = False       '.PageSetup.PrintArea = .Range(A1).Resize((i + 1) * 55, 10).Address     End With   End If End Sub 念の為、 >(r-1)ページ目として印刷範囲を55行追加する というのが、追加コピーした範囲に合わせて印刷範囲を設定するという意味なら、 コメントアウトした .PageSetup.PrintArea = .Range(A1).Resize((i + 1) * 55, 10).Address を活かしてください。 (...Resize((i + 1) * 55, 10)の 10 は実際の列数にあわせて変更が必要です)

fred2000
質問者

お礼

マクロの勉強を始めたばかりで、分不相応なことをやろうとしていたようです。 勉強のために、回答いただいたコードを元にして、新たに自分で作ろうとおもいます。 説明不足の質問に的確な回答ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

マクロの記録でVBAの勉強を始めたためか Select Selection の多用で、コードが冗長。 初めに返って、やっていること、やりたいことを文章で逐次述べてご覧。回答者にはそのほうが、良いアドバイスができる場合が多いと思う。 質問コードにはPrintPreviewが出てきていないが、何をしたいのでしょうか。 >(r-1)ページ目として印刷範囲を55行追加する Range(・・ ).Printoutの()内の範囲を増やせば印刷される範囲は 増えますが。 もともと、どのシートのどの範囲をどう改ページして印刷したいのですか。そういうことが質問には説明されていない。 読者・回答者にはあなたのシートや問題や意図はみえないのです。言葉で説明しなきゃ。 ーー (VBAコードの参考) 改ページプレビューと標準 Sub test01() ActiveWindow.View = xlPageBreakPreview MsgBox "aaa" ActiveWindow.View = xlNormalView End Sub 印刷プレビュー Sub Test02() ActiveWindow.SelectedSheets.PrintPreview End Sub

fred2000
質問者

お礼

勉強のしかたは、おっしゃる通りマクロの記録を主に使っています。説明もうまくできず、自分でまだまだだと痛感しました。 とりあえず、今回の質問はANo.1の方の回答を元に解決しそうです。 今度質問する時には、アドバイス通り言葉での説明をしっかりするようにします。 ありがとうございました。

関連するQ&A

専門家に質問してみよう