Excel VBAのWithステートメントの使い方

VBA でひとつのオブジェクトに対して複数の項目を同時に設定したい場合には、With ステートメントを使うと便利です。With ステートメントを使うことでコードも読みやすくなり、処理のスピードも速くなります。

ここでは、With ステートメントの使い方について説明します。

Withステートメントの使い方

With ステートメントの構文は以下の通りです。

With オブジェクト
    .処理1
    .処理2
    ...
End With

With で指定したオブジェクトはブロック内ではドット「.」で表記できます。

たとえば、セルA1に対して「値の代入」「太字の設定」「赤文字の設定」「文字サイズの設定」を設定を With を使わずに記述ると以下のようになります。

Range("A1").Value = "テスト文字列"        ' セルに値を設定
Range("A1").Font.Bold = True            ' 太字に設定
Range("A1").Font.Color = RGB(255, 0, 0) ' 赤文字に設定
Range("A1").Font.Size = 20              ' 文字サイズを20ポイントに設定

これをWithステートメントを使って記述すると以下のようになります。

With Range("A1")
    .Value = "テスト文字列"        ' セルに値を設定
    .Font.Bold = True            ' 太字に設定
    .Font.Color = RGB(255, 0, 0) ' 赤文字に設定
    .Font.Size = 20              ' 文字サイズを20ポイントに設定
End With

こちらの方がより簡潔にコードを記述でき、設定するセルを変更したい場合も1箇所の変更で済みます。

With ステートメントを入れ子にする

With の中でさらに With を記述することもできます。

With Range("A1")
    .Value = "テスト文字列"       ' セルに値を設定
    With .Font
        .Bold = True            ' 太字に設定
        .Color = RGB(255, 0, 0) ' 赤文字に設定
        .Size = 20              ' 文字サイズを20ポイントに設定
    End With
End With