【Excel・VBA】繰り返しの記述を省略する [With~End With]

VBAコードを構築していると
同じ記述を繰り返し記載してしまう事も有るかと思います。
その場合は「With ~ End With」をご検討下さい。
それでは例題とサンプルコードです。
 

広告

例題とサンプルコード

解説の為、
簡単な例題とサンプルコードを下記に用意しました。
 

例題

VBA_With_繰り返しの記述を省略_1
「A1:A3」と「B1:B2」と「C1:C3」に適当な数字を入れ込むとする

 
例えば、Sheet1~3まであり
Sheet2に処理を複数行うとした場合、
「Withを使用しない場合」と「使用した場合」を比較してみましょう

 

サンプルコード(Withを使用しない場合)

ThisWorkbook.Worksheets("Sheet2").Range("A1:A3") = 1
ThisWorkbook.Worksheets("Sheet2").Range("B1:B3") = 2
ThisWorkbook.Worksheets("Sheet2").Range("C1:C3") = 3

 

サンプルコード(Withを使用した場合)

    With ThisWorkbook.Worksheets("Sheet2")
      .Range("A1:A3") = 1
      .Range("B1:B3") = 2
      .Range("C1:C3") = 3
    End With

使用の有・無で得られる結果は変わりありません。
しかし、重複した記述が無い分、見やす事は確実です。
何よりスッキリしたコードで、
あとで振りかえっても分かりやすく纏まっている
これは重要ですね。

ちなみにもっと実用的にコードを構築するとなると

  Dim mySht1 As Worksheet
    Set mySht1 = ThisWorkbook.Worksheets("Sheet2")
 
    With mySht1
      .Range("A1:A3") = 1
      .Range("B1:B3") = 2
      .Range("C1:C3") = 3
    End With

といった感じでしょうか?
コードも、よりスッキリした印象ですね。

以上になります。
日常業務のお役に立てれば幸いです。
 

広告