守るべきルール
Withステートメントを使用しないこと。
With ThisWorkbook.Worksheets(1)
.Range("A1").Value = "テスト"
End With
↓置き換え
Dim wb As Workbook
Set wb = ThisWorkbook.Worksheets(1)
wb.Range("A1").Value = "テスト"
例外
ルール制定の理由
Withステートメントはすべて変数で置き換えが可能です。変数の使用に対してWithステートメントは以下のような難解なコードの記述を可能にします。VBAエキスパート試験でも定番の問題であり、問題になるということは誤答率を稼ぎやすい、ひいては可読性を下げるコードであるということです。
With ThisWorkbook.Worksheets(1)
Range("A1").Value = .Range("A1").value
End With
↓同意のコード
ActiveSheet.Range("A1").Value = ThisWorkbook.Worksheets(1).Range("A1").Value
バージョン管理
| バージョン履歴 | 更新日 | 更新内容 |
| 1.0.0 | 2025/10/06 | 公開 |
アスパLabではExcelVBAのコーディングガイドラインを開示しています
アスパLabでは、すべてのExcelVBA開発者へ向けてコーディングガイドラインを公開しています。個人のスキルと考えられがちなExcelVBAを他のプログラミング言語と同様、組織的に管理し、業務へ応用してもらいやすくするためのガイドです。もちろんこのガイドラインに従うかどうかは開発者の皆さんや組織の管理者の自由な意思で決めてください。


Comment