Excel VBAを活用して、社内研修受講者一覧表を作成する方法を詳しく説明します。初心者向けに基本から具体的なコード例とその詳細な解説、さらに実用的な応用例を3つ紹介します。Excel VBAの強力な機能を活用して、社内の効率化を図る手助けをします。
社内研修受講者一覧表の基本構造
Excelのシート上で研修受講者の情報を管理する際、以下のような基本的な情報が考えられます。
1. 受講者の氏名
2. 所属部門
3. 研修タイトル
4. 受講日
5. 受講結果(合格/不合格/保留など)
VBAを使用して一覧表を自動生成
以下は、上記の情報を持つ研修受講者一覧表を自動生成する基本的なVBAコードです。
Sub CreateTrainingList()
Dim LastRow As Long
'シートを選択
Sheets("研修受講者一覧").Select
'最終行を取得
LastRow = ThisWorkbook.Sheets("研修受講者一覧").Cells(ThisWorkbook.Sheets("研修受講者一覧").Rows.Count, "A").End(xlUp).Row + 1
'テーブルヘッダーを入力
Cells(1, 1).Value = "氏名"
Cells(1, 2).Value = "所属部門"
Cells(1, 3).Value = "研修タイトル"
Cells(1, 4).Value = "受講日"
Cells(1, 5).Value = "受講結果"
'テーブルのデザイン設定
Range("A1:E1").Font.Bold = True
Range("A1:E" & LastRow).Borders.LineStyle = xlContinuous
End Sub
コードの詳細解説
1. **Sub CreateTrainingList()**:VBAのマクロを定義する際の始まりの部分です。
2. **Dim LastRow As Long**:最後の行番号を取得するための変数を定義しています。
3. **Sheets(“研修受講者一覧”).Select**:”研修受講者一覧”という名前のシートを選択します。
4. **LastRow**の部分では、最後の行番号を取得しています。
5. **Cells(1, 1).Value**のような行でテーブルのヘッダーを設定しています。
6. **Range(“A1:E1”).Font.Bold = True**でヘッダーのフォントを太字にしています。
7. **Range(“A1:E” & LastRow).Borders.LineStyle = xlContinuous**でテーブル全体の罫線を設定しています。
応用例
応用例1: 新しい受講者の追加
以下は、新しい受講者の情報を一覧表の最後の行に追加するVBAコードです。
Sub AddNewTrainee(Name As String, Department As String, TrainingTitle As String, DateTaken As Date, Result As String)
Dim LastRow As Long
'最終行を取得
LastRow = ThisWorkbook.Sheets("研修受講者一覧").Cells(ThisWorkbook.Sheets("研修受講者一覧").Rows.Count, "A").End(xlUp).Row + 1
'受講者情報を追加
Cells(LastRow, 1).Value = Name
Cells(LastRow, 2).Value = Department
Cells(LastRow, 3).Value = TrainingTitle
Cells(LastRow, 4).Value = DateTaken
Cells(LastRow, 5).Value = Result
End Sub
応用例2: 受講者の情報をフィルタリング
特定の部門や結果に基づいて受講者の情報をフィルタリングするVBAコードの例です。
Sub FilterByDepartment(Department As String)
Rows(1).AutoFilter Field:=2, Criteria1:=Department
End Sub
応用例3: 特定の受講者の情報を検索・表示
指定した受講者の名前に基づいて情報を検索し、その受講者の詳細情報をメッセージボックスに表示するVBAコードの例です。
Sub SearchTrainee(Name As String)
Dim LastRow As Long, FoundRow As Long
'最終行を取得
LastRow = ThisWorkbook.Sheets("研修受講者一覧").Cells(ThisWorkbook.Sheets("研修受講者一覧").Rows.Count, "A").End(xlUp).Row
'指定した名前を検索
On Error Resume Next
FoundRow = Columns(1).Find(What:=Name, After:=Cells(1, 1), LookIn:=xlValues, LookAt:=xl
Whole).Row
On Error GoTo 0
If FoundRow > 0 Then
MsgBox "名前: " & Cells(FoundRow, 1).Value & vbNewLine & _
"所属部門: " & Cells(FoundRow, 2).Value & vbNewLine & _
"研修タイトル: " & Cells(FoundRow, 3).Value & vbNewLine & _
"受講日: " & Cells(FoundRow, 4).Value & vbNewLine & _
"受講結果: " & Cells(FoundRow, 5).Value
Else
MsgBox Name & "は一覧表に存在しません。"
End If
End Sub
まとめ
Excel VBAを活用することで、社内研修受講者一覧表の作成や管理が効率的になります。上記の基本的なコードや応用例を参考に、独自のニーズに合わせたカスタマイズを行いましょう。Excel VBAの機能を最大限活用して、業務の効率化や質の向上を図りましょう。
コメント