VBA:With〜End With

目次

VBA Withステートメントとは

VBAのWith...End Withステートメントは、特定のオブジェクトに対して一連のステートメントを実行する際に役立ちます。これを使用することで、同じオブジェクトに対して繰り返しアクセスする必要がある場合にコードを簡潔にし、可読性を高めることができます。

VBA Withステートメントの基本

With...End Withステートメントは、次のような構文で使用されます。

With オブジェクト
    ' 実行するステートメント
End With

ここで、オブジェクトはアクセスしたいオブジェクトを指定し、ステートメントはそのオブジェクトに対して実行したい一連の処理です。Withブロック内では、オブジェクトのメンバーにピリオドを付けて直接アクセスできます。

Withステートメントのサンプルコード

例1: セルのプロパティを変更

セルA1のフォントサイズ、名前、背景色などを変更する場合、通常は次のように書きます。

Range("A1").Font.Size = 15
Range("A1").Font.Name = "Verdana"
Range("A1").Interior.Color = vbYellow
' 他のステートメント...

しかし、With...End Withを使用すると、次のように記述できます。

With Range("A1")
    .Font.Size = 15
    .Font.Name = "Verdana"
    .Interior.Color = vbYellow
    ' 他のステートメント...
End With

この方法では、Range("A1")を繰り返し記述する必要がなく、コードが簡潔になります。

例2: フォントプロパティの変更

セルA1のフォント関連プロパティを一括で変更する場合、次のように書けます。

With Range("A1").Font
    .Bold = True
    .Color = vbRed
    .Italic = True
    .Size = 20
    .Underline = True
End With

この例では、Range("A1").Fontに対して複数のプロパティ変更を一度に行っています。各プロパティは、Withステートメント内でピリオドを使って直接指定されています。

このWith...End Withステートメントの使用により、オブジェクトの名前を繰り返し記述する手間を省き、コードの可読性を高めることができます。また、複雑なオブジェクトの表現を簡略化し、コードの実行速度を向上させる効果もあります。

例3:複数のエクセルシートに変更を適用する

複数のエクセルシートに同じ設定(例えば、すべてのシートのA1セルの背景色を変更する)を適用する場合、With...End Withを使用して各シートに対する操作を簡単にできます。

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    With ws.Range("A1")
        .Interior.Color = RGB(255, 0, 0)
    End With
Next ws

このコードは、ワークブック内のすべてのワークシートに対して、A1セルの背景色を赤に変更します。

hideharu

With...End Withステートメントを使用すると、同じオブジェクトに対する複数の操作を1回の参照で行うことができ、コードの冗長性を減らし、可読性を向上させることができますよ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次