はじめに:コードの記述量に圧倒されていませんか?
「Worksheets(“Sheet1”).Range(“A1”)…」といった長い記述を何度も繰り返していると、コードの本質的な役割が見えにくくなってしまいます。
今回は、そんな「コードが煩雑で読みづらい」「同じ記述を何度も書くのが手間に感じる」という悩みを解決する、VBAの「Withステートメント」について解説します。
これを習得すれば、記述量が削減されるだけでなく、プログラムの処理速度向上も期待できる「一石二鳥」のテクニックとなります。
Withステートメントとは?
簡潔に言えば、「特定の対象(オブジェクト)」を最初に宣言することで、以降の記述において主語を省略できる構文です。
例えば、日常生活で以下のような話し方をすると、少し冗長に感じられますよね。
- 「佐藤さんは、営業部所属です」
- 「佐藤さんは、Excelが得意です」
- 「佐藤さんは、甘いものが好きです」
これを、
「佐藤さんについて:」
- 「営業部所属です」
- 「Excelが得意です」
- 「甘いものが好きです」
と要約するのが「With」の役割です。英文法における「代名詞」や「主語の省略」に近い感覚で捉えると分かりやすいでしょう。
導入前後の比較(Before / After)
実務でよくある「セル範囲(A1:E1)の見出しを装飾する」コードで、その違いを比較してみましょう。
【Before】Withを使わない場合(修正前)
同じセル範囲を何度も記述するため、入力の負担が大きく、コードの全体像も把握しづらくなります。
Sub FormatHeader_Bad()
' 背景色を黄色にする
Range("A1:E1").Interior.Color = vbYellow
' 文字を太字にする
Range("A1:E1").Font.Bold = True
' 文字を中央揃えにする
Range("A1:E1").HorizontalAlignment = xlCenter
' 罫線を引く
Range("A1:E1").Borders.LineStyle = xlContinuous
End Sub
【After】Withを使った場合(修正後)
いかがでしょうか。対象範囲の記述が一度で済むため、コード全体が非常にすっきりと整理されました。
Sub FormatHeader_Good()
' A1からE1の範囲について、一括で設定を適用
With Range("A1:E1")
.Interior.Color = vbYellow ' 「.(ドット)」から記述を開始できる
.Font.Bold = True
.HorizontalAlignment = xlCenter
.Borders.LineStyle = xlContinuous
End With
End Sub
なぜWithを使うべきなのか?
Withステートメントの導入には、主に2つの大きなメリットがあります。
1. メンテナンス性が飛躍的に高まる
例えば、対象範囲を「A1:E1」から「A1:F1」へ変更する場合、Beforeの書き方では4箇所の修正が必要です。しかしWithを使えば、冒頭の1箇所を書き換えるだけで済み、修正漏れによるミスも防げます。
2. プログラムの実行速度が向上する
Withステートメントは対象となるオブジェクトに対して一度だけ参照を行うため、コンピュータのリソース効率が向上します。
毎回「佐藤さん!」と呼び止めて用件を一つずつ伝えるより、一度の呼び出しでまとめて伝えるほうが効率的なのと同様の理屈です。数万件のデータを扱うような大規模なプログラムでは、この僅かな差が大きなパフォーマンスの差として現れます。
実務で役立つ実践サンプルコード
最後に応用編として、Excel作業で頻出する「入力欄の強調表示」を自動化するコードを紹介します。
Sub HighlightInputArea()
' B2セルの入力欄を視覚的に強調する
With Range("B2")
.Value = "ここに氏名を入力" ' 初期テキストの設定
.Interior.Color = RGB(220, 230, 241) ' 背景を淡い青色に設定
.Font.Color = vbRed ' 文字色を赤に設定
.Font.Bold = True ' 太字に設定
.Borders.LineStyle = xlContinuous ' 枠線を適用
End With
MsgBox "入力欄の作成が完了しました。"
End Sub
おわりに
プログラミングの上達には、「いかに効率よく、楽に作業を完結させるか」という探究心が欠かせません。「With」を使いこなし、コードも思考もスマートに整理整頓していきましょう!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント