PR

Access VBA逆引き集|Withステートメントでコードを劇的に見やすくする実践テクニックとCopilot活用術

VBA

Access VBAの開発を続けていると、

  • 同じオブジェクト名が何度も登場する
  • コードが長くなって読みにくい
  • フォーム修正時のミスが増える
  • 保守が大変になる
  • Copilotが生成したコードが冗長になる

というケースが増えてきます。

Withステートメントを活用するだけでVBAコードの可読性と保守性を大幅に向上できます。

派手な機能ではありませんが、ベテラン開発者が必ず利用する定番テクニックの一つです。実際に長期間運用されるシステムほど、Withステートメントを活用したコードが多くなります。Access VBA逆引き集|ベテラン開発者が必ず使っているVBA記述テクニック15選とCopilot活用術では可読性向上の重要テクニックとして紹介されています。


スポンサーリンク

Withステートメントとは

Withステートメントは、

同じオブジェクト

繰り返し記述

省略できる

ための構文です。


なぜ重要なのか

初心者がよく書くコードです。

Me!txtName.Visible = True

Me!txtName.Enabled = True

Me!txtName.BackColor = vbYellow

Me!txtName.ForeColor = vbBlack

問題点

同じ記述が多い

修正が面倒

読みにくい

です。


Withを使用した場合

With Me!txtName

  .Visible = True

  .Enabled = True

  .BackColor = vbYellow

  .ForeColor = vbBlack

End With

非常に見やすくなります。


基本構文

With オブジェクト

.プロパティ

.メソッド

End With


逆引き① テキストボックスを設定したい

フォーム制御の定番です。

With Me!txtCustomer

  .Enabled = True

  .Visible = True

  .Locked = False

End With

効果

入力可能状態

になります。


逆引き② 色を変更したい

警告表示です。

With Me!txtAmount

  .BackColor = vbYellow

  .ForeColor = vbRed

End With

活用

高額入力時などに利用します。


逆引き③ ラベルを更新したい

進捗表示です。

With Me!lblStatus

  .Visible = True

  .Caption = "処理中"

End With

逆引き④ レコードセット処理で使いたい

DAOでも便利です。

With rs

  .MoveFirst

  Do Until .EOF

    .MoveNext

  Loop

End With

効果

コード量削減になります。


逆引き⑤ Excelオブジェクトで使いたい

Excel連携です。

With xlSheet

  .Cells(1,1) = "顧客コード"

  .Cells(1,2) = "顧客名"

  .Cells(1,3) = "金額"

End With

Accessフォームとの相性が良い

最も利用される用途です。

例えば

Me!txtCode

Me!txtName

Me!txtAddress

を制御する場合です。


記述例

With Me

  !txtCode = ""

  !txtName = ""

  !txtAddress = ""

End With

効果

初期化処理が見やすくなります。


実務活用例① 顧客管理システム

顧客情報更新時です。

With Me

  !txtCustomerCode.SetFocus

  !txtCustomerName = ""

  !txtAddress = ""

End With

効果

入力画面初期化が簡単になります。


実務活用例② CSV取込結果表示

結果通知です。

With Me!lblResult

  .Caption = "取込完了"

  .ForeColor = vbBlue

End With

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

判定結果表示です。

With Me!txtResult

  .BackColor = vbRed

  .ForeColor = vbWhite

End With

効果

異常判定を強調できます。


実務活用例④ ログ出力フォーム

状態管理です。

With Me!txtLog

  .Visible = True

  .Locked = True

End With

実務活用例⑤ Excel出力

大量出力処理です。

With xlSheet

  .Range("A1") = "売上"

  .Range("B1") = "数量"

End With

Excel連携では頻繁に利用します。


Withを使わない方が良いケース

全てに使うべきではありません。


一行だけ

Me!txtName = ""

程度なら不要です。


長すぎるWith

悪い例です。

With Me

  '100行以上

End With

問題点

読みにくい

保守しづらい

です。


ネストも可能

中級者向けです。

With xlBook

  With .Sheets(1)

    .Cells(1,1) = "開始"

  End With

End With

注意

深すぎるネストは避けましょう。


ベテラン開発者の定番パターン

プロパティ変更です。

With Me!txtValue

  .Enabled = False

  .BackColor = RGB(220,220,220)

  .Locked = True

End With

非常によく見かけます。


WithとCopilotの相性

非常に良いです。

Copilot生成コードは同じオブジェクト参照が多くなりがちです。


改善依頼例

以下のAccess VBAコードを

Withステートメントを使って

可読性を向上してください。


Copilot活用術① コード圧縮

重複するオブジェクト参照を

Withへ変更してください。


Copilot活用術② コードレビュー

このコードに

Withステートメントを

適用できる箇所を

指摘してください。


Copilot活用術③ フォーム最適化

Accessフォーム処理です。

Withを活用して

保守性を向上してください。

実務では非常に役立ちます。


With利用時の注意点

オブジェクトを明確にする

With Me!txtName

のように対象を明確にします。


長くし過ぎない

20~30行程度が理想です。


ネストし過ぎない

可読性低下を招きます。


開発現場での利用頻度

個人的な利用頻度です。

順位用途
1位フォーム制御
2位Excel連携
3位レコードセット
4位帳票出力
5位画面初期化

保守案件ではほぼ毎日見かけます。


Withステートメントを覚えるメリット

次の効果があります。

  • コード量削減
  • 可読性向上
  • 修正ミス削減
  • Copilotコード改善
  • 保守性向上

特にチーム開発では大きな効果があります。


まとめ

WithステートメントはAccess VBA開発で可読性と保守性を向上させる基本テクニックです。

特に

  • フォーム制御
  • Excel連携
  • レコードセット処理
  • CSV取込結果表示
  • 帳票出力

などで大きな効果を発揮します。

またCopilotを活用すれば、

  • コード最適化
  • 重複削減
  • 可読性改善

も効率よく行えます。

派手な機能ではありませんが、長期間運用される業務システムでは非常に重要なテクニックです。Access VBA開発者なら早い段階で習得しておきましょう。

Access 実践マスターガイド~仕事の現場で即使える | 今村 ゆうこ |本 | 通販 | Amazon
Amazonで今村 ゆうこのAccess 実践マスターガイド~仕事の現場で即使える。アマゾンならポイント還元本が多数。今村 ゆうこ作品ほか、お急ぎ便対象商品は当日お届けも可能。またAccess 実践マスターガイド~仕事の現場で即使えるもアマ…

コメント

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