Excel VBAで効率的に社内研修受講者一覧表を作成する方法

Excel VBAを活用して、社内研修受講者一覧表を作成する方法を詳しく説明します。初心者向けに基本から具体的なコード例とその詳細な解説、さらに実用的な応用例を3つ紹介します。Excel VBAの強力な機能を活用して、社内の効率化を図る手助けをします。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft 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の機能を最大限活用して、業務の効率化や質の向上を図りましょう。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次