【VBA】With文の使い方を解説(Withステートメント)
今回はWith文の使い方を紹介します。(Withステートメント)
VBAのWith文は、オブジェクトに対してメソッドやプロパティをまとめて使用するために使います。
With文を使うメリットは主に次の2つがあります。
- コードが見やすくすっきりする
- 実行速度を向上
With文の使い方
With オブジェクト
.メソッド
.プロパティ
End With
'具体例
With ActiveSheet
.Range("A1").Value = 1
.Range("A2").Value = 2
.Range("A3").Value = 3
End With
With文の使い方は↑のようになります。
With文のあとにオブジェクトを記載します。
すると、With文の中ではオブジェクトを省略して、ピリオドを記載するだけでメソッドやプロパティを使うことができます。
With文を使うメリット
With文を使うメリットをWithなし、Withありのコードを比べて紹介します。
With文なしのコード
Sub With文なし()
ActiveSheet.Range("A1").Value = 1
ActiveSheet.Range("A2").Value = 2
ActiveSheet.Range("A3").Value = 3
ActiveSheet.Range("A4").Value = 4
ActiveSheet.Range("A5").Value = 5
End Sub
サンプルコードはアクティブシートに対して5つの値を入力するコードになります。
With文ありのコード
Sub With文あり()
With ActiveSheet
.Range("A1").Value = 1
.Range("A2").Value = 2
.Range("A3").Value = 3
.Range("A4").Value = 4
.Range("A5").Value = 5
End With
End Sub
このコードはWith文なしのコードを、動作そのままにWith文ありに変更しています。
With文の1つ目のメリットはオブジェクトを何度も書かなくて済むことです。コードが見やすくすっきりします。
もう1つのメリットは実行速度の向上です。
With文なしのコードでは何度もActiveSheetオブジェクトにアクセスしています。何度もアクセスすると少しずつですが実行時間が長くなっていきます。
それに対してWith文ありのコードではActiveSheetオブジェクトにアクセスするのは最初の1回だけになります。
サンプルコード程度なら大して変わりませんが、Forループなどが絡むときはWith文による高速化を試してみてください。