PR

Access VBA逆引き集|ベテラン開発者が必ず使っているVBA記述テクニック15選とCopilot活用術

VBA

Access VBAを覚え始めた頃は「とりあえず動けばよい」と考えがちですが、システム運用が始まると状況は変わります。

実は、Access開発の品質を左右するのは難しいアルゴリズムではなく、日々のVBAの書き方です。

  • エラーに強い
  • 読みやすい
  • 修正しやすい
  • 処理速度が速い

VBAを書くためには、ベテラン開発者が当たり前のように使っているテクニックを身につけることが重要です。

今回は実務で効果が高いVBA記述テクニックを紹介します。


スポンサーリンク

Option Explicit は必ず使用する

最も重要なテクニックです。

標準モジュールやフォームモジュールの先頭に必ず記述します。

Option Compare Database

Option Explicit

例えば

Dim lngCount As Long

lngCnt = 100

と入力しても、

変数名の誤り

を検出できます。

誤字によるバグを防ぐため必須です。


変数名で型を分かりやすくする

初心者

Dim A

Dim B

Dim C

おすすめ

Dim lngCount As Long

Dim strFileName As String

Dim dblValue As Double

Dim dtmWorkDate As Date

変数の役割が一目で分かります。

保守性が大きく向上します。


マジックナンバーをなくす

悪い例

If Me!測定値 > 10 Then

良い例

Const LIMIT_VALUE As Double = 10

If Me!測定値 > LIMIT_VALUE Then

修正が容易になります。


長い処理は関数化する

悪い例

Private Sub cmd実行_Click()

'200行のコード

End Sub

良い例

Private Sub cmd実行_Click()

Call ImportCsv

End Sub


Private Sub ImportCsv()

'CSV取込

End Sub

処理単位で分けましょう。


Exit Sub を活用する

ネストを減らします。

悪い例

If Not IsNull(Me!設備番号) Then

  If Me!設備番号 <> "" Then
   処理
  End If

End If

良い例

If Nz(Me!設備番号, "") = "" Then Exit Sub

処理

読みやすくなります。


Null対策を徹底する

Access開発では必須です。

悪い例

If Me!数量 > 0 Then

良い例

If Nz(Me!数量,0) > 0 Then

エラー防止になります。


エラー処理を実装する

業務システムでは必須です。

On Error GoTo ErrHandler

処理

Exit Sub

ErrHandler:

MsgBox Err.Number & vbCrLf & _

Err.Description

運用後のトラブル調査が容易になります。


Debug.Print を使う

ベテランほど利用しています。

Debug.Print strFileName

Debug.Print lngCount

イミディエイトウィンドウで確認できます。

MsgBoxより効率的です。


SQLは変数へ格納する

悪い例

CurrentDb.Execute _

"UPDATE T_TEST SET ..."

良い例

Dim strSQL As String

strSQL = _

"UPDATE T_TEST " & _

"SET 数量 = 100"

CurrentDb.Execute strSQL

デバッグしやすくなります。


Withを活用する

同じオブジェクトを繰り返し参照する場合です。

悪い例

Me!txtName.Visible = True

Me!txtName.Enabled = True

Me!txtName.Back

良い例

With Me!txtName

 .Visible = True

 .Enabled = True

 .BackColor = vbYellow

End With

読みやすくなります。


DoEvents の使い過ぎに注意する

初心者が多用しがちです。

DoEvents

便利ですが、

  • 処理遅延
  • 予期せぬイベント発生

の原因になります。

必要な場面だけ使用しましょう。


レコードセットは必ず解放する

忘れやすいポイントです。

rs.Close

Set rs = Nothing

リソースリーク防止になります。


Select Case を活用する

悪い例

If 状態 = 1 Then

ElseIf 状態 = 2 Then

ElseIf 状態 = 3 Then

良い例

Select Case 状態

Case 1

Case 2

Case 3

End Select

可読性が向上します。


コメントは「なぜ」を書く

初心者

‘ループ処理

ベテラン

‘CSV取込済データの重複登録防止

処理内容ではなく目的を書く方が有効です。


共通処理は標準モジュールへ移動する

例えば

GetFiscalYear()

GetMonthEnd()

WriteLog()

などです。

複数フォームで再利用できます。


実務活用例① CSV取込システム

おすすめ構成

ImportCsv()

ValidateCsv()

WriteImportLog()

処理を分割します。

保守が容易になります。


実務活用例② 設備管理システム

共通関数

GetEquipmentNo()

CheckEquipment()

WriteHistory()

モジュール化すると再利用性が向上します。


実務活用例③ ログ管理

共通ログ関数です。

Call WriteLog( _

"CSV取込", _

strFileName)

全システムで利用可能になります。


Copilot活用術① VBAレビュー依頼

完成したコードを渡します。

Access VBAです。

このコードをレビューしてください。

保守性

実行速度

バグの可能性

を指摘してください。

非常に有効です。


Copilot活用術② リファクタリング依頼

この100行のコードを

関数化

コメント追加

変数名改善

してください。

品質向上に役立ちます。


Copilot活用術③ エラー処理追加

このコードへ

On Error GoTo

を利用したエラー処理を

追加してください。

標準的な構造を作成できます。


Copilot活用術④ ベテラン視点レビュー

おすすめの依頼です。

Access VBAです。

もしあなたが保守担当者なら

このコードのどこを

最初に修正しますか。

理由も説明してください。

単なる文法ではなく運用視点の指摘を受けられます。


本当に重要な3つの習慣

Access開発歴が長い人ほど次の3つを徹底しています。

① Option Explicit

② Null対策

③ エラー処理

この3つだけでも障害発生率は大きく下がります。


まとめ

Access VBAは「動けばよい」から「保守できる」へ考え方を変えることが重要です。

特に実務で効果が高いのは、

  • Option Explicit
  • 意味のある変数名
  • 関数化
  • Null対策
  • エラー処理
  • Debug.Print
  • Select Case
  • 標準モジュール化

です。

また最近はCopilotを活用することで、

  • コードレビュー
  • リファクタリング
  • エラー解析
  • 設計レビュー

も効率よく実施できます。

VBAの技術力を高める近道は難しい関数を覚えることではなく、「読みやすく保守しやすいコードを書く習慣」を身につけることです。

Amazon.co.jp

コメント

タイトルとURLをコピーしました