よく使うステートメント

With ~ End With 同じオブジェクトの連続処理

 同じオブジェクトに対して 複数の処理を連続して実行する場合、コードの一部を省略する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ステートメント を使って記述するようにしてください。

GoTo サブルーチン移動  指定したセルにジャンプするためのメソッドとして「GoTo メソッド」があります。 基本形 Application.GoT...
Exit ループやプロシージャを抜け出る  繰り返しの処理を行う中である条件が満たされたとき、その繰り返し処理から抜け出すのに「Exitステートメント」が使われます。 E...