- 締切済み
エクセルで差込印刷をするマクロについて
エクセルでSheet1のAに名前Bに学年が入っています。 Sheet2のY1にSheet1のAを、Y2にSheet1のBを差込印刷したいのです。 前の質問を見て名前だけの印刷は出来ましたが学年が上手くいきません。ぜひぜひお願いいたします。 学年の差込印刷が上手くいったときのマクロを記述します Sub Pri_Name() Range("A1").Activate Do While ActiveCell.Text <> "" Worksheets(2).Range("Y1").Value =ActiveCell.Text Worksheets(2).Range("A1:Z38").PrintOut ActiveCell.Offset(1, 0).Activate Loop End Sub
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 日本VBA協会というのがありますので、ここをご覧になってみてください。 http://www.vbaa.jp/index.htm 「学ぶ・教える」というところで、みてみてください。これから先の良い刺激にはなります。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。Wendy02です。 >皆さんはどうやって勉強したのでしょうか? 私は、同じことを何度も書いていますが、市販の書籍とOffice プログラマーズ・ガイドを使っています。今も、毎日、書籍を読んでいます。掲示板の質問は、もっぱら、私の練習問題ですが、実際に、自分が開発するものは、まったく違った雰囲気のコードになります。 その人が目標にする場所やその意向によって、学習用の媒体は変わると思いますが、基本は、ネットでは覚えないと信じています。
- imogasi
- ベストアンサー率27% (4737/17070)
私の好きな流儀を上げます。 実際のデータでテストしてませんが、やってみてください。 OffsetもDoWhileもActiveCellも出てこないやさしいものです。 SetとEndぐらいが見慣れないかも。 Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet1") d = Range("A65535").End(xlUp).Row For i = 1 To d sh2.Cells(1, "Y") = sh1.Cells(i, "A") sh2.Cells(2, "Y") = sh1.Cells(i, "B") sh2.Range("A1:Z38").PrintOut Next i Set sh1 = Nothing Set sh2 = Nothing End Sub
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 merlionXXさんので良いのですが、私もちょっと書いてみました。 印刷範囲は、一度、PageSetup.PrintArea に設定すれば、そのままの範囲で印刷します。なお、古いPCですと、印刷バッファが一杯で、スタック状態のままになりますから、ウェートを置いています。 Sub Pri_Name3() Dim c As Range With Worksheets("Sheet2") .PageSetup.PrintArea = Range("A1:Z38").Address Worksheets("Sheet1").Select For Each c In Worksheets("Sheet1").Range("A1", Range("A65536").End(xlUp)) .Range("Y1").Value = c.Value .Range("Y2").Value = c.Offset(, 1).Value .PrintOut ', Preview:=True Application.Wait Now + TimeValue("00:00:10") 'ウェートを置く10秒 Next End With End Sub
お礼
ありがとうございました。 早速試してみます。 またよろしくお願いいたします。 皆さんはどうやって勉強したのでしょうか?
- merlionXX
- ベストアンサー率48% (1930/4007)
テストしてませんが、こんな感じかな? Sub Pri_Name2() Range("A1").Activate Do While ActiveCell.Text <> "" With Worksheets(2) .Range("Y1").Value = ActiveCell.Text .Range("Y2").Value = ActiveCell.Offset(0, 1).Text .Range("A1:Z38").PrintOut End With ActiveCell.Offset(1, 0).Activate Loop End Sub
お礼
ありがとうございました。
お礼
ありがとうございます。 まずは基本を覚えるために本屋さんで自分に合った書籍を手に入れます。