ACCESS VBAでコメントアウト(注釈)を記載する方法
VBAのコードを作成して、しばらく運用してから直そうとしたとき、「あれ?これってどういう意図で書いたんだっけ」と自分でもわからなくなることはないでしょうか。
そんな時は、コードに開設を書いておくと便利です。
条件分岐やループなど、VBAのコードだけではわかりにくい部分を日本語で補足しておくことで、コードの可読性が高まります。
今回は、VBAでコメントアウト(注釈)を記載する方法を、どのような場合にコメントを残した方が良いかも含めて記載します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。
目次
コメントアウトとは
コメントアウトとは、VBAのプロシージャ上に備忘録のようなコメントを記載しておくことです。
例えば、下のプロシージャでは太字斜体になっている部分がコメントアウトです。
Public Sub uriage_torikeshi(uriage_id As Long)
'■■■売上伝票削除時に売上明細も連動して削除■■■
'変数にADOオブジェクトを代入
Set cnn = CurrentProject.Connection
Set rst1 = New ADODB.Recordset
rst1.CursorLocation = adUseClient
'レコードセットを取得
rst1.Open "TRN_売上明細", cnn, adOpenKeyset, adLockOptimistic
'トランザクション処理開始
cnn.BeginTrans
rst1.Filter = "売上ID = " & uriage_id
'売上明細がない場合
If rst1.RecordCount = 0 Then
cnn.RollbackTrans
'売上明細がある場合
Else
Do Until rst1.EOF
rst1!削除 = "true"
rst1.MoveNext
Loop
cnn.CommitTrans
End If
'終了処理
rst1.Close: Set rst1 = Nothing
cnn.Close: Set cnn = Nothing
End Sub
コメントアウトした部分は、VBAの処理には影響を与えませんので自由に記載することが可能です。
コメントアウトをせずにプログラムだけを記述していると、どういった意図で作成した処理だったか分からなくなることがあります。
そうした事態を避け、後からプロシージャを見返した際に、処理内容が分かりやすくする目的でコメントを記載します。
コメントアウトの方法
VBAでのコメントアウトの記述方法は簡単です。
文章の最初に「’」(シングルクオーテーション)を付けるだけです。
先ほどの画像でも、コメントアウトされた部分はすべて「’」から始まっていることが確認できます。
コメントを記載した方がよい場合
コメントアウト自体は非常に簡単です。
ここからは、ACCESSの実務も踏まえて、どのような場合にコメントを残した方がよいかを記載します。
他人が作成したVBAのコードを修正した場合
まず、最初は他人が作成したVBAのコードを修正した場合です。
VBAを複数人で開発するということは少ないかもしれませんが、開発者が不在で別の人がコードを修正するというケースは多いでしょう。
そういった場合に、修正履歴としてコメントアウトしておくと、万一不具合があった際にどこを修正したか分かって便利です。
コメントには修正日なども入れておく方がよいでしょう。
下記の例のようなイメージです。
Public Sub sengen()
'2022/01/11追記
test_date = Date
test_count = 1
Debug.Print "処理終了"
'2022/01/11追記ここまで
End Sub
また、既存のプログラムを削除する場合も、文章自体を削除するのではなくコメントアウトして動作しないようにしておく方が修正履歴が残り、分かりやすい場合があります。
条件分岐の際に、分岐ルートを明示する
If文による条件分岐は非常によく使われると思います。
その際、条件分岐のルートをコメントアウトしておくとわかりやすくなります。
下記のように、条件分岐する際に条件を、分岐先に処理内容をまとめておくとよいでしょう。
'対象レコードの有無を判定
If rst1.RecordCount = 0 Then
'対象レコードが無い場合は処理終了
Exit Sub
'対象レコードがある場合
Else
'請求チェックを解除
Do Until rst1.EOF
rst1!請求 = False
rst1.Update
rst1.MoveNext
Loop
End If
特に分岐が複雑になるケースでは、自分で見返しても理解するのに時間がかかる場合がありますので、分岐条件を丁寧に記載することをお勧めします。
変数の説明
変数を定義する際に、何に利用している変数かをコメントアウトしておくのも便利です。
特に、パブリック変数は複数箇所で使用されますので、定義箇所に利用目的を書いておくと理解しやすくなります。
Public tantou_id As Long
'担当者IDを請求書に引き渡すための変数。
Public uriage_id As Long
'売上IDを売上明細入力時に自動入力するための変数。
Public seikyu_id As Long
'請求IDを売上伝票に自動入力するための変数。
プロシージャの説明
同様に、プロシージャも大まかに何のためのプロシージャなのかを書いておくことをお勧めします。
プロシージャが別の場所からCallされている際に、該当のプロシージャをすべて読まなくても、何をしているかが簡単に把握できるためです。
私は、下記のようにプロシージャ定義の直下に書いています。
Public Sub seikyu()
'■■■請求書発行時の売上伝票の更新処理■■■
このように様々なシーンでコメントアウトは使えますが、コードの可読性を高めることは自分自身や自分以外にACCESSを修正する方に有用ですので活用ください。
以上、VBAでコメントアウトを記載する方法でした。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。