【Excel】印刷1毎ごとに表示する氏名を変える

①名前リストのシートを用意

②印刷するシートを用意
※赤枠部分に「社員マスタ」シートの氏名を、印刷する1毎ごと切り替わるようにします。

③マクロを使えるようにする
マクロを使えるようにする」を参照

④ボタンを配置する

⑤マクロに名前を付けて「新規作成」を押す

⑥ソースコードを記載して「Microsoft Visual Basic for Applications」画面を閉じる
  

●ソースコード

Sub 社員毎印刷()
Dim LastRow As Long
Dim i As Long
Dim myNo As Long

If vbNo = MsgBox("印刷を開始します。よろしいですか?", vbYesNo) Then Exit Sub

'社員マスタシートを指定'
With Worksheets("社員マスタ")
'社員マスターシートA列の最終入力行を取得'
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

'1行目から最終入力行までループ処理'
For i = 1 To LastRow

'1行ずつA列のNo.を取得'
myNo = .Range("A" & i).Value

'取得したNo.を日報シートのD3セルにセットし'
'印刷を開始'
'B3セルにはD3セルを指定したVLOOKUP関数が仕込まれているため、社員マスタシートの名称が表示される。'
With Worksheets("日報")
.Range("D3").Value = myNo
.PrintOut Copies:=1, Collate:=True
End With
Next i
End With

MsgBox "印刷が終了しました。"

End Sub

 

⑦B3セルに「=IFERROR(VLOOKUP(D3,社員マスタ!A1:B13,2),””)」と入力
※⑥で記載したソースコードでD3セルに「社員マスタ」シートの番号が入ります。
その番号をもとに名前を表示するためこの関数を利用します。

⑧D3セルの文字を白にする
※D3セルに「社員マスタ」シートのNo.を埋め込んでいるのを隠すため