①単純な減算では「#######」と表示されてしまう
②「ABS」で絶対値を取り、「マイナスになる場合」「マイナスにならない場合」で書式を設定する
※=TEXT(ABS(E3-B3),IF(B3>E3,”-[h]:mm”,”[h]:mm”))
①名前リストのシートを用意
②印刷するシートを用意
※赤枠部分に「社員マスタ」シートの氏名を、印刷する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.を埋め込んでいるのを隠すため