教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 構文】With文(オブジェクト名の記述省略)の使い方を教えて!

構文

構文は以下の通りです。

With オブジェクト
    ' メソッドやプロパティの処理
End With

解説

With文は、特定のオブジェクトに対して行う処理を、Withブロック内でまとめて記述することができます。With文では、まず「With」キーワードを使って処理対象のオブジェクトを指定します。その後にWithブロック内にメソッドやプロパティの処理を記述します。Withブロック内では、オブジェクト名を省略してメソッドやプロパティを直接指定することができます。

使い方

以下では、具体的な使い方の例をいくつか紹介します。

1.セルの操作

With文を使用してセルの値や書式を一括して設定する例を紹介します。

Sub FormatCellsWithWith()
    With Range("A1")
        .Value = "Hello"
        .Font.Bold = True
        .Interior.Color = RGB(255, 0, 0)
    End With
End Sub

この例では、Range("A1")をWith文で指定し、セルの値を「Hello」と設定します。また、フォントを太字にし、セルの背景色を赤に設定します。Withブロック内では、オブジェクト名を省略して直接メソッドやプロパティを指定できるため、コードがスッキリと読みやすくなります。

2.ワークシートの操作

With文を使用してワークシートの操作をまとめて行う例を紹介します。

Sub ManipulateWorksheet()
    With Worksheets("Sheet1")
        .Range("A1").Value = "Hello"
        .Range("A1").Font.Bold = True
        .Range("A1").Interior.Color = RGB(255, 0, 0)
    End With
End Sub

この例では、Worksheets("Sheet1")をWith文で指定し、ワークシート「Sheet1」上のセルの値や書式を一括して設定します。Withブロック内では、オブジェクト名を省略してセルの範囲やプロパティにアクセスしています。これにより、コードの可読性が向上し、重複するオブジェクト名の入力を省くことができます。

3.複数のオブジェクトの操作

With文を使用して複数のオブジェクトの操作をまとめて行う例を紹介します。

Sub ManipulateMultipleObjects()
    With Range("A1")
        .Value = "Hello"
        .Font.Bold = True
        .Interior.Color = RGB(255, 0, 0)
    End With
    With Worksheets("Sheet1")
        .Range("B1").Value = "World"
        .Range("B1").Font.Bold = True
        .Range("B1").Interior.Color = RGB(0, 0, 255)
    End With
End Sub

この例では、複数のオブジェクトでWith文を使用しています。最初のWithブロックでは、セル「A1」の値と書式を設定し、次のWithブロックでは、「Sheet1」上のセル「B1」の値と書式を設定しています。これにより、異なるオブジェクトに対する操作をまとめて行うことができます。

まとめ

With文は、同じオブジェクトに対する複数のメソッドやプロパティの処理を簡潔に記述するための便利な機能です。With文を使うことで、コードの可読性が向上し、オブジェクト名の重複入力を省略することができます。是非活用してください。