【2026年7月最新】VBAコメントアウト完全ガイド|シングルクォート・Remコマンド・セルコメント・実務活用まで徹底解説
VBAでマクロを書いているとき、コードの意味を説明するメモ(コメント)を残したいと思ったことはありませんか?コメントアウトを正しく使うだけで、あとから読み返しやすくなり、チームでの共有もスムーズになります。この記事では、VBAのコメントアウトの基本から、セルへのコメント追加・削除・編集、デバッグへの活用、ベストプラクティスまで、実務で使えるレベルで徹底解説します。
01 BASIC VBAコメントアウトとは何か?コードの品質を決める基礎知識 コメントの役割・なぜ重要か
📚 用語解説
コメントアウト:プログラムのソースコード内に、実行されない説明文や注釈を記述すること。VBAでは行の先頭または途中にシングルクォート(')を置くと、それ以降の文字が実行時に無視される。
VBAのコメントアウトとは、コードの中に「プログラムとして実行されないメモ」を書き込む機能です。たとえば、処理の目的や変数の意味、将来の修正予定などをコード内に直接記述できます。コメントは実行時には完全に無視されるため、処理速度や動作に影響を与えません。
コメントアウトが重要な理由は、大きく3つあります。第一に、自分が数週間後にコードを読み返したときに処理の流れを素早く把握できます。第二に、チームメンバーが引き継いだ際に意図が伝わります。第三に、デバッグ時に一時的にコードを無効化する手段として使えます。
コードそのものは「何をしているか」を示しています。コメントは「なぜそうしているか」「どんな条件で動くか」を補足するために書くのが最も効果的です。「price = 1000 '単価」より「price = 1000 '税抜き単価(仕様書p.5参照)」のほうが実務では役立ちます。
02 SYNTAX シングルクォート(')でコメントアウトする基本 最も標準的な方法:行頭・行末どちらでも使える
📚 用語解説
シングルクォート:VBAでコメントを始めるための記号(')。この記号以降、行末まですべてがコメントとして扱われ、プログラムには影響しない。日本語環境では「アポストロフィ」とも呼ばれる。
VBAで最もよく使われるコメントアウトの方法が、シングルクォート(')を使う方法です。行の先頭にシングルクォートを置けばその行全体がコメント、コードの途中に置けばそれ以降がコメントになります。
' これはコメントです(行全体がコメント)
Dim price As Long
price = 1000 ' 単価(税抜)←これはインラインコメント
' 変数を初期化する
Dim counter As Integer
counter = 0
Sub SampleMacro()
' 税込み価格を計算するサブルーチン
Dim price As Long
price = 1000 ' 単価
' 消費税率10%を掛けた税込み価格を算出
Dim taxPrice As Long
taxPrice = price * 1.1
MsgBox "税込価格: " & taxPrice
End Sub
上記のように、シングルクォートは「行頭」「コードの末尾(インライン)」どちらでも使えます。VBAエディタ(VBE)ではコメント部分が緑色で表示されるため、視覚的に区別しやすくなっています。
Visual Basic Editor(VBE)では、「編集」ツールバーの「コメントブロック」ボタンで選択した複数行を一度にコメントアウトできます。ツールバーが表示されていない場合は「表示」→「ツールバー」→「編集」から追加できます。
03 REM Remコマンドによるコメントアウト 歴史的なコメント方法:古いコードを読む際に必須の知識
📚 用語解説
Remコマンド:「Remark(注釈)」の略。VBAの前身であるBASIC言語から引き継がれたコメント記法。現在のVBAでは主にシングルクォートが使われるが、Remも引き続き有効。
Remコマンドは、VBAの前身であるBASIC言語から受け継がれた古い形式のコメント方法です。「Rem」に続けてスペースを置き、コメント文を書きます。現在のVBAでもRemは有効ですが、実務ではシングルクォートがほぼ標準となっています。
Rem これはRemコマンドを使ったコメントです
Rem 変数の宣言セクション
Sub RemSample()
Rem サブルーチン開始
Dim total As Long
total = 0
Rem ここで合計を計算する
total = 100 + 200
MsgBox "合計: " & total
End Sub
シングルクォートと異なり、Remはコードと同じ行の末尾(インライン)には使えません。「price = 1000 Rem 単価」とすると構文エラーになります。Remは必ず行の先頭に置く必要があります。ただし、コロン区切りの複文では「price = 1000 : Rem 単価」という形でインライン的に使うことが可能です。
古いExcelのマクロやVBAコードを引き継いだ場合、Remコマンドで書かれたコメントが出てくることがあります。意味は同じですが、現代のVBAではシングルクォートに統一していくと読みやすくなります。
04 COMPARE シングルクォートとRemの違い・使い分け 両者の特徴を正確に理解して選択する
シングルクォートとRemは同じ「コメントアウト」の機能を持ちますが、いくつかの違いがあります。以下の比較表で整理しておきましょう。
| 項目 | シングルクォート(') | Remコマンド |
|---|---|---|
| 記述位置 | 行頭・インライン両方OK | 行頭のみ(コロン構文を除く) |
| 記述方法 | 'コメント | Rem コメント |
| 可読性 | 短く書ける | やや冗長 |
| 現在の使用頻度 | 標準・推奨 | 古いコードに残存 |
| インライン使用 | 可能 | 不可(エラーになる) |
| VBEでの色 | 緑色表示 | 緑色表示(同じ) |
結論として、現代のVBA開発ではシングルクォートを使うのが標準です。Remを新規コードで書く理由はほぼありません。ただし、既存コードにRemが使われている場合は、無用に変更せず読み解けるようにしておくことが重要です。
05 MULTILINE 複数行をまとめてコメントアウトする方法 VBEの編集ツールバーを使った効率的な一括処理
📚 用語解説
コメントブロック:VBEの編集ツールバーに用意されている機能。選択した複数行をまとめてコメントアウト(またはコメント解除)できる。VBAには他言語のような /* */ ブロックコメント構文はない。
VBAには、PHPやJavaScriptの /* */ のような複数行を一度にコメントアウトする専用の構文はありません。複数行をまとめてコメントにするには、各行の先頭にシングルクォートを付ける必要があります。ただし、VBEのツールバー機能を使えば一括で処理できます。
Sub BeforeComment()
Dim x As Long
x = 100
MsgBox x
End Sub
' ↓ 複数行コメントアウト後 ↓
Sub AfterComment()
' Dim x As Long
' x = 100
' MsgBox x
End Sub
VBEの「置換」機能(Ctrl+H)で行頭の「^」を「' 」に置換することでも一括コメントアウトが可能です。ただし正規表現のサポートが限定的なため、ツールバーのコメントブロック機能が最も確実です。
デバッグ作業中は「この処理ブロックを一時的に無効化したい」という場面が頻繁にあります。複数行の一括コメントアウト操作を覚えておくと、作業効率が大きく向上します。
06 INLINE インラインコメント(コードの末尾にコメント) コードと説明を同じ行に書く実務的なテクニック
インラインコメントとは、コードの実行文と同じ行の末尾にコメントを書く形式です。変数の意味や単位、特別な条件などをすぐ横に記述できるため、可読性が非常に高くなります。
Sub InlineSample()
Dim price As Long ' 商品単価(税抜、円)
Dim qty As Integer ' 注文数量(個)
Dim rate As Double ' 消費税率(0.1 = 10%)
price = 1000 ' 単価:1,000円固定(2026年7月時点)
qty = 5 ' デフォルト注文数
rate = 0.1 ' 消費税率10%
Dim subtotal As Long
subtotal = price * qty ' 小計(税抜)
Dim tax As Long
tax = subtotal * rate ' 消費税額
Dim total As Long
total = subtotal + tax ' 税込合計
MsgBox "税込合計: " & total & "円"
End Sub
インラインコメントを書く際は、コードとコメントの間にスペースを2〜3個置くと見やすくなります。また、コメントの位置を縦に揃えると、コード全体が読みやすくなります。Excelでよく使われる「列の幅に合わせる」感覚でコメントを整形するのがポイントです。
「price = 1000 'priceに1000を代入する」のような自明なコメントは不要です。コードを読めばわかることを繰り返すだけのコメントは、むしろコードを読みにくくします。「なぜその値か」「どんな条件か」「どこから来た値か」など、コードだけでは伝わらない情報を補うコメントに絞りましょう。
07 CELL-COMMENT セルにコメントを追加する(AddCommentメソッド) VBAコードのコメントとは別概念:Excelセルへのメモ追加
📚 用語解説
AddComment:Excelのセルオブジェクト(Rangeオブジェクト)に対してコメント(セルメモ)を追加するメソッド。VBAコードのコメントアウトとは全く別の機能で、ユーザーがExcelシートのセルにマウスを当てたときに表示される吹き出しを追加する。
VBAの「コメントアウト」とは別に、Excelシートのセルに「コメント(メモ)」を追加する機能があります。これはコードの注釈ではなく、Excelシート上でセルにカーソルを当てたときに表示される吹き出しメモです。AddCommentメソッドで自動的にセルへコメントを追加できます。
Sub AddCellComment()
' A1セルにコメントを追加する
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' 既存コメントがある場合は先に削除(エラー防止)
If Not ws.Range("A1").Comment Is Nothing Then
ws.Range("A1").Comment.Delete
End If
' AddCommentでコメントを追加
ws.Range("A1").AddComment "これは単価の入力欄です。税抜価格を入力してください。"
' コメントを常時表示する
ws.Range("A1").Comment.Visible = True
MsgBox "A1セルにコメントを追加しました"
End Sub
AddCommentメソッドの引数には、セルに表示するコメントテキストを文字列で渡します。コメントを追加した後、Visibleプロパティでコメントの表示状態を制御できます。Trueにするとセルをクリックしなくてもコメントが常時表示されます。
| プロパティ/メソッド | 機能 | 使用例 |
|---|---|---|
| AddComment(text) | セルにコメントを新規追加 | Range("A1").AddComment "説明" |
| Comment.Text | コメントテキストの取得・変更 | Range("A1").Comment.Text |
| Comment.Visible | コメントの表示/非表示切り替え | Comment.Visible = True |
| Comment.Delete | コメントの削除 | Range("A1").Comment.Delete |
| Comment.Shape | コメントの枠(図形)を操作 | Comment.Shape.Width = 200 |
08 EDIT-DELETE セルコメントの編集・削除・表示/非表示 ClearComments・Comment.Text・Visible で完全制御
セルに追加したコメントは、VBAから編集・削除・表示切り替えができます。大量のコメントを一括管理したい場合に特に便利です。
Sub ManageCellComments()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' ===== コメントの編集(テキスト変更)=====
If Not ws.Range("A1").Comment Is Nothing Then
' 既存コメントのテキストを書き換える
ws.Range("A1").Comment.Text "更新済み:2026年7月時点の単価"
End If
' ===== コメントの非表示化 =====
ws.Range("A1").Comment.Visible = False
' ===== コメントの削除(1セル)=====
If Not ws.Range("B1").Comment Is Nothing Then
ws.Range("B1").Comment.Delete
End If
' ===== シート全体のコメント一括削除 =====
ws.Cells.ClearComments
MsgBox "コメント管理処理が完了しました"
End Sub
Sub ShowAllComments()
' シート内の全コメントを一括表示する
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim cmt As Comment
For Each cmt In ws.Comments
cmt.Visible = True
Next cmt
MsgBox "全コメントを表示しました(" & ws.Comments.Count & "件)"
End Sub
AddCommentはコメントが存在しないセルに新規追加するメソッドです。すでにコメントがあるセルにAddCommentを呼ぶとエラーになります。既存コメントを書き換えたい場合はComment.Textプロパティを使います。どちらを使うか前に「If Not Range.Comment Is Nothing Then」で存在チェックをするのが安全です。
Sub SafeAddOrUpdateComment()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim targetCell As Range
Set targetCell = ws.Range("C1")
' コメントが存在するか確認してから追加 or 更新
If targetCell.Comment Is Nothing Then
' コメントなし → 新規追加
targetCell.AddComment "新しいコメント"
Else
' コメントあり → テキスト更新
targetCell.Comment.Text "更新されたコメント"
End If
End Sub
09 DEBUG コメントアウトのデバッグ活用(一時的に無効化) バグ特定・テストに欠かせないコメントアウト技術
📚 用語解説
デバッグ:プログラムのバグ(不具合)を発見して修正する作業。VBAでは「コードの一部をコメントアウトして一時的に無効化し、どこで問題が起きているかを絞り込む」手法が広く使われる。
コメントアウトは、コードの注釈を書くためだけでなく、デバッグ(バグ修正)にも非常に役立ちます。「この処理を一時的に無効にしたらどうなるか」をすぐ試せるのが大きなメリットです。
Sub DebugSample()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' ===== デバッグ中:Step1の処理を確認 =====
Debug.Print "Step1開始"
ws.Range("A1").Value = 100
' Step2をコメントアウトして一時的に無効化(エラーの原因を切り分け)
' ws.Range("B1").Value = ws.Range("A1").Value / 0 ' ← ゼロ除算エラーが出ていた箇所
Debug.Print "Step2スキップ"
' Step3はそのまま実行
ws.Range("C1").Value = ws.Range("A1").Value * 1.1
Debug.Print "Step3完了: " & ws.Range("C1").Value
MsgBox "デバッグ完了"
End Sub
デバッグの基本的な手順は「エラーが出る行を特定する」→「その前後をコメントアウトして絞り込む」→「原因が判明したら修正してコメントアウトを解除する」というサイクルです。VBEの「ステップ実行(F8キー)」と組み合わせると、さらに精度の高いデバッグができます。
「' TODO: この処理は後で最適化する」「' FIXME: ゼロ除算の可能性あり」のように、特定のキーワードをコメントに使うと、後から検索(Ctrl+F)で一覧できます。チームで作業する場合は、このような規約を決めておくと引き継ぎがスムーズです。
10 BEST-PRACTICE コメントの書き方ベストプラクティス 読みやすく、保守しやすいコメントの書き方10の原則
コメントは「書けばよい」というものではありません。読む人を助けるコメントと、逆に混乱させるコメントがあります。実務で使えるVBAコメントのベストプラクティスを整理しました。
' =============================================
' プロシージャ名: CalcTaxPrice
' 機能 : 商品の税込み価格を計算して返す
' 引数 : price - 税抜き単価(Long型、円)
' qty - 数量(Integer型)
' taxRate - 消費税率(Double型、例: 0.1)
' 戻り値 : 税込み合計額(Long型、円)
' 更新履歴 : 2026-07-18 菅澤 新規作成
' =============================================
Function CalcTaxPrice(price As Long, qty As Integer, taxRate As Double) As Long
' 税抜き小計 = 単価 × 数量
Dim subtotal As Long
subtotal = price * qty
' 消費税額を計算(小数点以下切り捨て)
Dim tax As Long
tax = CLng(subtotal * taxRate) ' CLng で四捨五入→Long変換
' TODO: 端数処理を仕様書に合わせて切り捨て/切り上げに変更する
CalcTaxPrice = subtotal + tax
End Function
| NG例(悪いコメント) | OK例(良いコメント) |
|---|---|
| ' xに1を足す | ' ループカウンタをインクリメント(1始まりのため) |
| ' ここを変更した | ' 2026-07-18 菅澤:消費税率を8%から10%に変更(仕様書v2.3) |
| ' 処理する | ' 受注データをDBから取得してシートに書き出す |
| ' 重要 | ' FIXME: 1000件超えるとタイムアウトする。ページング実装が必要 |
11 CLAUDE-CODE Claude Codeで自動コメント生成 AI活用でVBAコメントを10倍速で書く実践ガイド
VBAコメントの重要性はわかった。でも、すべての処理にきちんとコメントを書くのは時間がかかる——そんな悩みを解決するのがClaude Codeです。AIがVBAコードを読み解き、的確なコメントを自動生成します。
Claude Codeを使ったVBAコメント自動生成の具体的なフローは次のとおりです。
' ===== Claude Codeに依頼するプロンプト例 =====
' 依頼文:
' 「以下のVBAコードに日本語コメントを追加してください。
' - プロシージャ先頭に機能・引数・戻り値のサマリを書く
' - 各変数の意味と型の補足を書く
' - 複雑な処理には「なぜそうしているか」の説明を付ける
' - 改善すべき箇所はTODOコメントで指摘する」
' ===== Claude Codeが生成したコメント付きコード例 =====
' =============================================
' プロシージャ名: FilterAndExport
' 機能 : 受注データから条件に合う行を抽出し別シートへコピー
' 引数 : targetDate - 抽出対象の日付(Date型)
' 更新履歴 : 2026-07-18 自動生成(Claude Code)
' =============================================
Sub FilterAndExport(targetDate As Date)
' 受注データシートと出力先シートを変数に格納
Dim srcWs As Worksheet ' 受注データの元シート
Dim dstWs As Worksheet ' 抽出結果の出力先シート
Set srcWs = ThisWorkbook.Sheets("受注データ")
Set dstWs = ThisWorkbook.Sheets("抽出結果")
' 出力先シートの既存データを全消去(毎回クリーンな状態にする)
dstWs.Cells.ClearContents
' 最終行を取得(受注データは1行目がヘッダー、2行目以降がデータ)
Dim lastRow As Long
lastRow = srcWs.Cells(srcWs.Rows.Count, 1).End(xlUp).Row
' コピー先の貼り付け行(ヘッダー行をスキップして2行目から)
Dim dstRow As Long
dstRow = 2
' ヘッダー行をコピー
srcWs.Rows(1).Copy Destination:=dstWs.Rows(1)
' TODO: 大量データ(10000件超)では処理が遅くなる。Autofilterへの変更を検討
Dim i As Long
For i = 2 To lastRow
' A列の日付が targetDate と一致する行のみ抽出
If CDate(srcWs.Cells(i, 1).Value) = targetDate Then
srcWs.Rows(i).Copy Destination:=dstWs.Rows(dstRow)
dstRow = dstRow + 1
End If
Next i
MsgBox "抽出完了: " & (dstRow - 2) & "件"
End Sub
Claude Codeは、上記のようなコメント生成だけでなく、「コメントの整合性チェック」「英語コメントへの翻訳」「既存コメントの品質改善」なども対話形式でこなせます。VBA開発をAIと協力して進めることで、品質と速度を同時に高められます。
コメント生成以外にも、エラー原因の特定・修正提案、リファクタリング(処理の整理)、VBAコードのExplain(処理の日本語解説)、セキュリティ上の問題指摘など、幅広い場面で使えます。「VBAを書ける上司がいる」感覚でAI活用を始めてみてください。
シングルクォート(')が現代VBAの標準コメント方法。Remは古い形式で新規コードには使わない。複数行はVBEのコメントブロック機能で一括処理。セルコメントはAddCommentメソッドで追加・編集・削除できる。デバッグにはコメントアウトで処理を無効化する手法が有効。コメントは「なぜ」を書き、最新に保つことが品質の肝。Claude Codeを使えばコメント生成を自動化できる。
よくある質問
Q. VBAでシングルクォート(')とRemコマンドはどちらを使えばいいですか?
A. 現代のVBA開発ではシングルクォート(')を使うのが標準です。Remはインライン(コードの末尾)コメントができない制限があり、コードが冗長になります。古いコードを引き継いだ場合にRemが使われていても問題ありませんが、新規コードはシングルクォートで統一することを推奨します。
Q. VBAで複数行をまとめてコメントアウトするにはどうすればいいですか?
A. VBAには /* */ のようなブロックコメント構文はありません。VBEの「編集」ツールバーにある「コメントブロック」ボタンを使うと、選択した複数行を一括でコメントアウトできます。ツールバーは「表示」→「ツールバー」→「編集」から表示できます。
Q. ExcelセルへのコメントをVBAで追加・削除するにはどうすればいいですか?
A. セルへのコメント追加はRange.AddCommentメソッドを使います(例:Range("A1").AddComment "メモ")。削除はRange.Comment.DeleteまたはCells.ClearComments(シート全体を一括削除)を使います。AddCommentは既存コメントがあるとエラーになるため、事前に「If Not Range.Comment Is Nothing Then」でコメント存在チェックを行いましょう。
Q. コメントアウトをデバッグに使う方法を教えてください。
A. 怪しい処理の前後の行をコメントアウトして一時的に無効化し、エラーが出なくなれば原因行を特定できます。VBEのF8キーによるステップ実行と組み合わせると、より詳細に処理を追跡できます。コメントアウトで切り分けができたら、修正後にコメントを解除してください。
Q. VBAのコメントにはどんな内容を書けばいいですか?
A. 「なぜその処理をしているか」「特殊な条件や仕様の根拠」「変数の単位や型の補足」「更新履歴(日付・担当者・変更内容)」「TODO:後で修正が必要な箇所」などが実務で役立つコメントです。コードを読めばわかる当たり前のことを繰り返すコメントは不要です。
Q. Claude CodeでVBAのコメントを自動生成できますか?
A. はい。Claude Codeにコメントを付けたいVBAコードを貼り付けて「日本語コメントを追加して」と指示するだけで、プロシージャのサマリ・各変数の説明・処理の意図・TODO指摘などを含むコメント付きコードを自動生成できます。既存コードへのコメント追加、引き継ぎドキュメント作成にも活用できます。
VBAコメントアウトの基本から応用まで習得できたでしょうか?コメントを正しく書くだけでコードの品質は格段に上がります。さらに一歩進んで、Claude CodeでVBAコメント生成やコードレビューを自動化したい方は、ぜひAI鬼管理のサービス詳細をご覧ください。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
AI活用を自社で回せるようになりたい方へ
AI鬼管理
Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。




