【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.を埋め込んでいるのを隠すため

【Excel】テーブルから単価を取得する

①単価テーブル、売上テーブルを用意

②商品名入力欄に「=IFERROR(VLOOKUP(B2,単価テーブル!$A$2:$C$5,2,FALSE),””)」
※単価テーブルからB2(商品コード)の入力値と一致する行の
2列目(商品名)を取得
※「IFERROR」でB2が未入力の際にエラーが表示されないようにする

③②と同様に単価入力欄に「=IFERROR(VLOOKUP(B2,単価テーブル!$A$2:$C$5,3,FALSE),””)」
※単価テーブルの3列目(単価)を取得

④金額欄に「=IFERROR(D2*E2,””)」
※単価×数量

⑤オートフィルで売上テーブルの末端まで関数をコピー