前回は、”リスト(名前一覧)を上から順にコピペして、スケジュールを印刷するマクロ”を作成する手順を紹介しました。なので、今回は、そのマクロを使って、自分好みにアレンジする方法をお伝えします。
前回のおさらい
前回は、「名前をコピーして印刷」という名前でマクロを作成しました。名前の一覧(J列)の上から順にデータをD1セルに入力して、1枚ずつ印刷していくマクロです。
実際のマクロの中身はコチラ。
Sub 名前をコピーして印刷()
Dim i As Long
Dim LastRow As Long
LastRow = Cells(Rows.Count, 10).End(xlUp).Row ' J列の最終行をさがす
For i = 2 To LastRow ' 2行目から最終行まで
Cells(1, 4) = Cells(i, 10) ' J列の、i行目の値をD1セルに入力する
ActiveSheet.PrintOut ' 印刷する
Next i
End Sub
詳細は前回の記事をご参照ください。これから、このマクロをアレンジしていきます!
「‘ J列の最終行をさがす」とか書いてあるのは、メモです
書いても書かなくても、マクロには関係ありませんが、今回は分かりやすいように書いておきます。
「‘ 」を入れると、そこから後ろはマクロにかかわってこないので、何をしているか書いておくと後々わかりやすいです。
マクロのアレンジ内容
データを入力する場所(ペーストセル)の変え方
今回は名前一覧のデータを、D1セルに入力していますが、その入力先を変更する時は、下記の赤字部分を変更します。
For i = 2 To LastRow ' 2行目から最終行まで
Cells(1, 4) = Cells(i, 10) ' J列の、i行目の値をD1セルに入力する
ActiveSheet.PrintOut ' 印刷する
Next i
Cells(1, 4) は、1列目の4行目を指しています。(CellsはR1C1参照形式で表されるセル指定の方法)
これをA1のセルに変更する時は、1列目の1行目になるので、Cells(1, 1) と変更します。
また、B5のセルに変更する時は、2列目の5行目になるので、Cells(2, 5) ですね。
R1C1参照形式とは?セルの列番号を簡単に調べる方法!
エクセルのマクロで、選択セルの列番号が何番目か調べる一番簡単な方法は、参照形式を変更することです。
まず、「Excelのオプション」を開きます。(「ファイルタブ-その他-オプション」の順に選択すると開けます)数式内の、R1C1参照形式を使用するにチェックを入れると、参照形式が変わります。
何が変わったかというと、下の画像の赤枠のところ。通常は、「D1」などセルの位置がA1形式で表示されますが、このチェックを入れると、セルの位置をR1C1参照形式で表示してくれています。
画像内では「J7セル」を選択しているので、枠内は「R7C10」と表示されています。
R1C1の「R」は行を表すRowの頭文字、「C」は列を表すColumnの頭文字です。
Cells( , ) のカッコ内は、R1C1参照形式の数値を入力するので、J7セルをCellsで指定したの場合は、Cells( 7, 10) と入力すればいいという事です。
参照する列(一覧データの列)の変え方
参照する列(名前データ)が他の場所にある場合は、下記の赤字部分(複数)を変更します。
Sub 名前をコピーして印刷()
Dim i As Long
Dim LastRow As Long
LastRow = Cells(Rows.Count, 10).End(xlUp).Row ' J列の最終行をさがす
For i = 2 To LastRow ' 2行目から最終行まで
Cells(1, 4) = Cells(i, 10) ' J列の、i行目の値をD1セルに入力する
ActiveSheet.PrintOut ' 印刷する
Next i
End Sub
LastRow = Cells(Rows.Count, 10).End(xlUp).Row
では、J列の最終行を探しています。Jは10番目なので、Cells(Rows.Count, 10)となっています。
Cells(1, 4) = Cells(i, 10)
では、J列の値を順番にD1セルに入力しています。
例えば、となりのK列に値がある場合は、
LastRow = Cells(Rows.Count, 11).End(xlUp).Row
Cells(1, 4) = Cells(i, 11)
と、10の場所を11に変更することになります。
Z列にある場合は、26番目なので、上記の11の場所を26に変更すればOKです!
参照するデータが別のシートにある場合
参照するデータが別のシートにある場合、ちょっと追加するコードがあります。と、その前に、シートの説明が必要になります。
このマクロには、どのシート(Sheet)のデータを使うのかの記載はありません。シートについての記載がないマクロは、選択しているセルがあるシート(Activesheet)で実行することになっているので、今回のマクロでは記載しませんでした。
ひとつのシートのみで完結するマクロを作る場合は、シートについて記載する必要はありませんが、複数のシート、ブックを使用する場合は、その名前を記載する必要があります!
例えば、印刷したい物を「スケジュール」と言う名前のシートに、参照するデータを「名簿」と言う名前のシートに分け、名簿シートのA列にデータを入力して作成してみます。
この場合のマクロの記述はこうなります。(変更した部分を赤色にしています)
Sub 名前をコピーして印刷()
Dim i As Long
Dim LastRow As Long
LastRow = Sheets("名簿").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastRow ' 2行目から最終行まで
Sheets("スケジュール").Cells(1, 4) = Sheets("名簿").Cells(i, 1)
Sheets("スケジュール").PrintOut
Next i
End Sub
「Sheets(“名簿”).」は「名簿シートの」という意味になります。
「Sheets(“スケジュール”).」は「スケジュールシートの」という意味です。
そして、データをA列に入力しているので、「Cells(Rows.Count, 1)」となります。
「Sheets(“スケジュール”).」は左から1番目のシートにあるので「Sheets(1).」、
「Sheets(“名簿”).」は2番目のシートにあるので「Sheets(2).」と記載することも可能です。
ワークシートの名前は英語でも日本語でも可能です。
ただ、名前で指定する場合は、”” で必ず囲ってください。
貼り付けたいデータが複数ある場合
貼り付けたいデータが複数ある場合、例えばJ列の右隣り、K列に部署名があり、それも入力したいとき。
その場合は、こんな形になります。
Sub 名前をコピーして印刷()
Dim i As Long
Dim LastRow As Long
LastRow = Cells(Rows.Count, 10).End(xlUp).Row ' J列の最終行をさがす
For i = 2 To LastRow ' 2行目から最終行まで
Cells(1, 4) = Cells(i, 10) ' J列の、i行目の値をD1セルに入力する
Cells(1, 6) = Cells(i, 11) ' K列の、i行目の値をF1セルに入力する
ActiveSheet.PrintOut ' 印刷する
Next i
End Sub
入力したいF1セルは「 Cells(1, 6) 」、K列は11番目なので「 Cells(i, 11) 」、
なので、上記の位置に「 Cells(1, 6) = Cells(i, 11)」を追加すればよし。
同様にすれば、3つでも4つでもデータを貼り付けることは可能です!
文字(記号)の追加も可能です!
「&」、「””」を使用すると、文字や記号を挿入することも可能です!
Cells(1, 4) = Cells(i, 10) & " 様"
こう入力すると、名前の後に「 様」と付けれます。
「&」は文字列を結合する為の記号、
「”文字列”」は文字列を指定する際に使用します。
「””」と入力すると、空白を意味します。
【まとめ】別シートにある複数のデータを貼り付けて印刷する
最後に、「別シートにある複数のデータを貼り付けて印刷する」場合のコードを記載します。
Sub 名前をコピーして印刷()
Dim i As Long
Dim LastRow As Long
① LastRow = Sheets("名簿").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastRow
② Sheets("スケジュール").Cells(1, 4) = Sheets("名簿").Cells(i, 1)
③ Sheets("スケジュール").Cells(1, 6) = "( " & Sheets("名簿").Cells(i, 2) & " )"
④ Sheets("スケジュール").PrintOut
Next i
End Sub
① 名簿シートのA列の最後の行を調べる
② スケジュールシートのD1セルに、名簿シートのA列i行目のデータを入力
③ スケジュールシートのF1セルに、名簿シートのB列i行目のデータを「()」で挟んで入力
④ スケジュールシートをプリント
まとめ
今回は、「マクロを使っての連続印刷」の方法をアレンジしてみました!分かりにくいと感じた方、良ければご連絡ください!
また、簡単にできるマクロがあれば紹介しますので、良ければご覧ください!