VBAマクロ用のコメントテンプレートは、標準モジュール全体に記述するものと、個別の**プロシージャ(Sub/Function)**の先頭に記述するものに分けて作成するのが一般的です。
以下に、実用的なコメントテンプレートを提示します。
目次
1. モジュールヘッダーテンプレート(標準モジュールやクラスモジュールの先頭)
このテンプレートは、モジュール全体(ファイル全体)の役割や履歴を管理するために使用します。
VB.Net
' //////////////////////////////////////////////////////////////////////////
' // モジュール名: [モジュール名 (例: modDataProcessor)]
' // 目的: [このモジュールが提供する機能の概要を記述。例: データ処理および集計を行う]
' // 依存関係: [外部ファイル、ADO/DAOなど特殊な参照設定が必要な場合は記述]
' // 作成者: [あなたの名前]
' // 作成日: [YYYY/MM/DD]
' //////////////////////////////////////////////////////////////////////////
' ■■■ 更新履歴 ■■■
' --------------------------------------------------------------------------
' 日付 | 変更者 | 変更内容 | 変更理由
' --------------------------------------------------------------------------
' YYYY/MM/DD | [名前] | [変更したプロシージャ名など] | [理由]
' YYYY/MM/DD | [名前] | [変更したプロシージャ名など] | [理由]
' --------------------------------------------------------------------------
Option Explicit ' 必須: 変数の宣言を強制し、バグを防ぐ
' --------------------------------------------------------------------------
' ■■■ 定数定義(必要に応じて) ■■■
' --------------------------------------------------------------------------
' Public Const C_SHEET_NAME As String = "集計データ" ' 処理対象シート名
' Private Const C_START_ROW As Long = 2 ' データ開始行
' ... (以降にコードを記述)
2. プロシージャヘッダーテンプレート(Sub/Functionの先頭)
個々の処理の役割や、引数、戻り値を明確にするためのテンプレートです。
【Subプロシージャ用】
VB.Net
' ==========================================================================
' プロシージャ名: [ProcName (例: ExecuteDataAggregation)]
' 目的: [このSubプロシージャが実行する具体的な処理内容を記述]
' --------------------------------------------------------------------------
' 引数:
' - TargetRange As Range : [処理対象とするセル範囲。例: データが入力されている範囲]
' - OutputSheet As Worksheet: [結果を出力するシートオブジェクト]
' --------------------------------------------------------------------------
' 備考:
' [特別な前提条件、処理の制約、または重要な注意事項を記述]
' ==========================================================================
Public Sub ExecuteDataAggregation(ByVal TargetRange As Range, ByRef OutputSheet As Worksheet)
' 処理開始 ...
End Sub
【Functionプロシージャ用】
VB.Net
' ==========================================================================
' プロシージャ名: [FuncName (例: GetLastRow)]
' 目的: [このFunctionが計算/取得するものを記述]
' --------------------------------------------------------------------------
' 引数:
' - TargetSheet As Worksheet: [最終行を検索するシートオブジェクト]
' - SearchColumn As Long : [最終行を判断する列番号]
' --------------------------------------------------------------------------
' 戻り値:
' - Long: [データが入力されている最終行の行番号]
' --------------------------------------------------------------------------
' 備考:
' [特別な前提条件、ロジックの説明、エラー処理の有無などを記述]
' ==========================================================================
Public Function GetLastRow(ByVal TargetSheet As Worksheet, ByVal SearchColumn As Long) As Long
' 最終行の計算ロジック
GetLastRow = TargetSheet.Cells(TargetSheet.Rows.Count, SearchColumn).End(xlUp).Row
End Function
3. コード内インラインコメントテンプレート
処理の意図やロジックを説明する際に使用します。
VB.Net
' // データ処理の開始 //
If TargetRange Is Nothing Then
' 意図: 引数チェック。処理前にデータ範囲が有効か確認する
Exit Sub
End If
' ------------------------------------------
' 複雑なロジックの説明 (Why)
' ------------------------------------------
For i = 1 To LastRow
' ※ マクロ実行時処理の負荷を軽減するため、画面更新を停止している
Application.ScreenUpdating = False
If ws.Cells(i, 3).Value = "例外" Then
' 意図: 例外データは次の行にスキップする (業務上の理由でこの処理が必要)
Continue
End If
Next i