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講座が表示されます。
-
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
-
【実践ガイド】パワークエリでデータ収集:Excel、CSV、PDF、Webデータを簡単に取り込む方法をマスターしよう!(2/11)
-
【総力特集】パワークエリで列操作をマスター:選択、変更、移動、削除、結合、分割の詳細解説&実践テクニック!(3/11)
-
【徹底解説】パワークエリで行操作をマスター!フィルター・保持・削除テクニックと練習用エクセルで実践学習(4/11)
-
パワークエリでデータクレンジング: 文字列結合、0埋め、テキスト関数をマスター(5/11)
-
パワークエリで四捨五入、切り捨て、切り上げをマスターする方法(6/11)
-
パワークエリで効率的なデータグループ化を実現する方法(7/11)
-
パワークエリで時間と日付の計算をマスター!便利な関数を使って効率アップ(8/11)
-
パワークエリで条件別集計をマスターする方法(9/11)
-
Excelパワークエリでクロス集計表とデータベース形式を瞬時に変換する方法(10/11)
-
Excelパワークエリ入門: 効率的なデータ整理をマスターしよう!(11/11)
パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください
コメント