同じオブジェクトに対して 複数の処理を連続して実行する場合、コードの一部を省略するWith ステートメントを使います。
共通する部分の記載が省略できて、コード自体が見やすくなるメリットがあります。
基本形
With 共通する部分
.処理1
.処理2
・・・
End With
例をあげて説明します。
Sub syori1()
Range(“B2:D5”).Value = “VBA” ‘①
Range(“B2:D5”).Interior.ColorIndex = 6 ‘②
Range(“B2:D5”).Font.Name = “Gulim” ‘③
Range(“B2:D5”).Font.Bold = True ‘④
End Sub
全て セル B2 ~ D5 への処理です。
① 「VBA]と表示します。
② セルの背景色を黄色にします。
③ フォントのタイプを「Gulim」にします。
④ フォントを太字にします。

この記述はオブジェクトであるセル範囲「Range(“B2:D5”)」が連続して記述されています。
これ自体がムダです。
よって、Withステートメントを使って、下記のように共通部分「Range(“B2:D5”)」をまとめます。
Sub syori2()
With Range(“B2:D5”)
.Value = “VBA”
.Interior.ColorIndex = 6
.Font.Name = “Gulim”
.Font.Bold = True
End With
End Sub
With と End With に囲まれる部分で、ピリオド「.」が先頭にある部分は、その前に「Range(“B2:D5”)」が省略されていることを意味します。
もう一つ例をあげます。
Sub syori3()
ActiveSheet.Range(“B2”).Value = ActiveSheet.Range(“D5”).Value * 2
End Sub
アクティブシートのセル B2 に、同じシートのセル D5 の値を2倍した値を代入する。
上記の場合は、「ActiveSheet」の同じ記載が見られます。
つまり
Sub syori4()
With ActiveSheet
.Range(“B2”).Value = .Range(“D5”).Value * 2
End With
End Sub
以上のようになります。
文頭にある ActiveSheet を省略するために、With ステートメントを開始します。
ピリオド「.」を忘れないようにしてください。
「End With」でこのステートメントは終了します。
2例とも「With ~ End With」で挟まれた処理内容の数が少ないので、その効果が今一つ実感ないかもしれません。
しかし、実務でマクロを組む際は、ピリオド「.」以下の文が10行、20行と多行にわたる場合がよくあります。
こうした時、その効果が実感できます。
省略できる部分は、できるだけこの Withステートメント を使って記述するようにしてください。

