- ベストアンサー
エクセルマクロの問題、印刷できない
- エクセルのマクロを使用している際に、印刷がうまくできない問題が発生しています。
- マクロの中で指定している範囲が正しく選択されず、そのために印刷範囲が正しく設定されないようです。
- マクロの修正を行い、印刷範囲の指定が適切に行われるようにする必要があります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは >上手く印刷できません。 具体的な内容を教えてください おそらく、 「印刷できるものはありません」 のエラーになってしまうと想定して回答します。 >Range("Ai:Ei").Select この指定ではセルAI~セルEIの選択になります。 A1~E1をコピーしてペースト A2~E2をコピーしてペースト A3~E3をコピーしてペースト A4~E4をコピーしてペースト ということをしたいならば、「Cells」を使います。具体的には以下のようにします。 Range(Cells(i, "A"), Cells(i, "E")).Select もうひとつ、 >Range("G1:K1").Select >Selection.Paste >Range("A1:F21").Select >Application.CutCopyMode = False >ActiveSheet.PageSetup.PrintArea = "$A$1:$F$21" データの貼り付け先はG1~K1なのに、 印刷範囲がA1~F21です。 これでは、せっかくマクロでコピー&ペーストしたデータが印刷されません。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
>Range("Ai:Ei").Select ーー 書くとするなら、 Range("Ai:Ei").Select Selection.Copy Sheets("カード").Select Range("G1:K1").Select Selection.Paste の部分は Sub test01() i = 2 Range("A" & i & ":E" & i).Copy Sheets("Sheet2").Range("G1") End Sub などだ。 (1)マクロの記録の方式を簡略化した部分と (2)Range("Ai:Ei").Selectの可笑しな書き方と (3)コピー貼り付けを簡略にしたコードを 勉強(経験)してみて。 もっともっと経験を積まないと。 色々やってみて勉強しないと直ぐ質問コーナーに投げていては上達しないと思う。 ほかにも可笑しなところがあるかもしれないがとりあえず。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! No.1さんが仰っているように「カード」SheetのG1~K1セルにコピー&ペーストしていて、 印刷範囲の設定がA1~F21になっていますので、G列以降は印刷しなくて良い!と言うコトのですかね? ※ G1~K1セルにデータが入ると関数等により印刷範囲指定セルのデータが変わる等々・・・ 一応質問内容を素直にやってみるコードにしてみました。 ごくごく単純に! Sub test() Dim i As Long Dim ws As Worksheet Set ws = Worksheets("カード") For i = 1 To 4 Range(Cells(i, "A"), Cells(i, "E")).Copy Destination:=ws.Cells(1, "G") ws.Activate ActiveSheet.PageSetup.PrintArea = ws.Range("$A$1:$F$21") ws.PrintOut Next i End Sub こういったコトをご希望だったのでしょうか? 尚、上記「※」の行のようなコトがあるのであれば、関数によっては計算結果表示まで若干時間がかかる場合もあるかと思います。 その場合何秒か時間をおいて Loopさせる方が良いかもしれませんね。 (例)Loopを3秒待つ場合・・・ 一例ですが、最後を ws.PrintOut Application.Wait Now() + TimeValue("00:00:03") Next i といったような感じでも良いかと思います。 この程度ですが、的外れならごめんなさい。m(_ _)m
- keithin
- ベストアンサー率66% (5278/7941)
コピー元の間違い1: コピーするセル範囲の指定の書き方が間違っている コピー元間違いの2: ループの2回目以降,コピーする元のシートの指定が間違っている 間違いとは判断できない箇所: 既出回答にもあるように,カードシートの「どの範囲を印刷したい」のか,シートの様子が見えないので不明 (ただし間違っていないと仮定) 作成例: sub macro1() dim i as integer worksheets("カード").pagesetup.printarea = "$A$1:$F$21" for i = 1 to 4 worksheets("元データのシート名").range("A" & i).resize(1, 5).copy _ destination:=worksheets("カード").range("G1") worksheets("カード").printout next i end sub