以下の成績一覧表を元に、点数が60点以上の方のみに合格証のシートを発行する機能の開発方法について解説していきます。

開発準備
まずは、以下のような成績一覧表を用意します。
こちらでは、B列にID、C列に名前、D列に点数の項目を用意しています。
また、成績情報は3行目以降に入力しています。

次に、発行する合格証の以下のようなテンプレートを用意します。
こちらでは、セルC4に合格者の名前を入力する場所を用意しています。

こちらでは、VBAを用いて開発していきます。
VBAに関して、一度も開発したことがない場合は、下記よりVBAの基礎をご確認ください。
開発
では、開発していきます。
[開発]タブの中の[マクロ]から”合格証発行”という名前で以下のように開発します。

Option Explicit '省略可 変数の宣言を強制する
Sub 合格証発行()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("成績一覧")
Set ws2 = Worksheets("合格証")
Dim lastRow As Long
lastRow = ws1.Cells(ws1.Rows.Count, "B").End(xlUp).Row
Dim i As Long
For i = 3 To lastRow
'発行条件
If ws1.Cells(i, "D").Value >= 60 Then
ws2.Copy After:=Worksheets(Worksheets.Count) '合格証発行
With Worksheets(Worksheets.Count)
.Name = ws1.Cells(i, "C").Value 'シート名
.Range("C4").Value = ws1.Cells(i, "C").Value & " 様" '合格者名
End With
End If
Next i
End Sub
1)[ws1,ws2]:シート情報を格納する用の変数を用意し"成績一覧"シートと"合格証"シートを設定する
2)[lastRow]:"成績一覧"シートの表のデータが入力されている最後の行番号を取得する
→「ws1.Cells(ws1.Rows.Count, "B")」で"成績一覧"シートのB列の最終行を選択し、「.End(xlUp)」で「Ctrl+↑」して移動して止まった位置の行番号「.Row」を取得する
3)[For~Next]:"成績一覧"シートのD列(点数)の値が60点以上のデータを3行目から「2)」で取得した行数まで確認する
→60点以上の場合は、「ws2.Copy After:=Worksheets(Worksheets.Count)」で"合格証"シートをコピーし、最後尾にシートを追加する
→コピーした最後尾のシート名を「.Name = ws1.Cells(i, "C").Value」で合格者の名前に変更し、合格証の合格者の名前を「Range("C4").Value = ws1.Cells(i, "C").Value」で"○○様(○○は合格者名)"という値に変更する
こちらの内容を実行すると、以下のように合格者にだけ合格証のシートが作成されます。

補足
発行されたシートのみを全て印刷したい場合は、合格証の最初のシート「増井星輝」を選択し、Shiftキーを押しながら最後のシート「野上将文」を選択します。
そのようにすると、以下のように一括で複数シートを選択することができます。

この状態で「Ctrl+P」などで印刷画面に移り、[設定]にて「作業中のシートを印刷」を選択することで、一括で印刷することができます。



























































