Excel VBA Withでオブジェクトに複数プロパティやメソッドを設定する方法

 

Excel VBA Withステートメントは、オブジェクトの複数のプロパティやメソッドを一度に効率よく設定または呼び出すために使用します。オブジェクト参照を繰り返し書く手間を省くことができます。具体的な使い方や、注意点やサンプルコードを紹介します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA Withを利用

以下のようなシーンで利用されます。

・同じオブジェクトに対して複数の操作を行う場合に、コードを短くし、読みやすくする。

・オブジェクト参照の回数を減らすことで、コードの実行速度が向上することがあります。

 

使い方

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

With オブジェクト
.プロパティ1 = 値1
.メソッド1 引数1, 引数2
' 他のプロパティやメソッドの呼び出し
End With

オブジェクト: 操作対象のオブジェクト
.プロパティ: 設定するプロパティ
.メソッド: 呼び出すメソッド

 

ポイント

・Withブロックの終了時に、オブジェクト参照が適切に解放されることを確認する。

・Withブロックをネストする場合は、どの`With`がどのオブジェクトに対しているかを明確にすること。

 

Excel VBA Withのサンプルコード

セルの書式設定
特定のセル範囲のフォントサイズ、色、背景色を一度に設定します。
Option Explicit

Sub FormatCells()
    With ThisWorkbook.Sheets("Sheet1").Range("A1:B2")
        .Font.Size = 12
        .Font.Color = RGB(255, 0, 0)
        .Interior.Color = RGB(200, 200, 200)
    End With
End Sub

このコードは、シート「Sheet1」のセル範囲A1:B2に対して、フォントサイズを12、フォントの色を赤、背景色を灰色に設定します。

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

複数のプロパティを設定する
グラフの設定を一度に行います。

Option Explicit

Sub FormatChart()
    Dim chartObj As ChartObject
    Set chartObj = ThisWorkbook.Sheets("Sheet1").ChartObjects("Chart 1")
    
    With chartObj.Chart
        .ChartTitle.Text = "Sales Data"
        .ChartType = xlColumnClustered
        .HasLegend = True
    End With
End Sub

このコードは、シート「Sheet1」にあるグラフオブジェクト「Chart 1」のタイトルを「Sales Data」に設定し、グラフの種類をクラスター化された柱状グラフに変更し、凡例を表示します。

Withステートメントは、同じオブジェクトに対して複数の操作を行う場合に、コードを簡素化し、読みやすくし、パフォーマンスを向上させるために使用されます。特にオブジェクトのプロパティやメソッドを頻繁に操作する場合に便利です。適切に使用することで、コードのメンテナンスが容易になります。

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問