
VBA上でコードを記述するにあたって、同一オブジェクトにさまざまな設定を行いたい場合に有効なのが「Withステートメント」。
今回はWithステートメントの基礎知識についてまとめていきます。
Withステートメントとは?
VBAには、ある1つのオブジェクトに対する処理をまとめて記述するために、Withステートメントという仕組みが用意されています。
Withステートメントを利用すると、同じオブジェクトに対して複数の処理を行うコードの中で、そのオブジェクト名を記述する箇所を1つにまとめることができます。
参照元:「Excel VBAのプログラミングのツボとコツがゼッタイにわかる本」
ここでいうオブジェクトへの「処理」とは、プロパティを設定したり、メソッドを実行することを指します。
プロパティやメソッドについては下記記事をご参照下さい。
【Excel VBA】プロパティの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
【Excel VBA】メソッドの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
Withステートメントの基本的なコード記述方法
まず、Withの後に半角スペース+対象のオブジェクト名を冒頭に記述します。
そして、最後は「End With」にてプロパティやメソッドを挟みます。
プロパティ名やメソッド名は、オブジェクト名を省略し、”.”[ピリオド]から記述します。
1 2 3 4 5 6 7 8 | With オブジェクト名 .プロパティ名 . . .メソッド名 . . End With |
Withステートメントの使用例
具体的な例でも見ていきましょう。
例えば、A1セル(オブジェクト)に対して以下の処理を行いたいとします。
- 値として”100″を代入する
- フォントカラーを赤字にする
- フォントサイズを12ポイントにする
- 太字にする
Withステートメントを使用しない場合と使用した場合の違いをそれぞれ見ていきたいと思います。
Withステートメントを使用しない場合
オブジェクト名として、「Range(“A1”)」が4回も表示されていてコードが冗長化していますね。
仮にオブジェクト名に修正が必要な場合、今回のケースでは4箇所も修正が必要になります。
Withステートメントを使用する場合
オブジェクト名の「Range(“A1”)」が1回だけの表示で、インデントも変えているためにコードも見やすいですね。
仮にオブジェクト名の修正が必要になったとしても修正は1箇所で済みます。
Withステートメントのメリット
オブジェクト名の記述を1箇所にまとめることができることで以下の2つのメリットを享受できます。
- コードの記述・修正が容易になる!
- コードが見やすくなる!
まとめ
細かな設定を行う上でWithステートメントは外せない仕組みといえますね。
何よりもコードが見やすくなって、記述・修正が容易になる点は一石二鳥なので、積極的に活用することをおすすめします。