VBAのコメントの付け方

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
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次