本記事では『Withステートメント』について解説していきます。
さっそくですが、下の「A1セルに値・背景色・文字色を加えるコード」を確認してください。
1 2 3 4 5 |
Sub sample1() Sheets("Sheet1").Range("A1").Value = 1234 'セルの値 Sheets("Sheet1").Range("A1").Interior.Color = RGB(255, 255, 0) 'セルの背景色 Sheets("Sheet1").Range("A1").Font.Color = RGB(255, 0, 0) '文字の色 End Sub |
上のコードでは「Sheets(“Sheet1”).Range(“A1”)」を何度も書いています。
まだ、この行数であれば少し見づらい程度で済みますが、行数が増えたり、少し分かりづらいクラスを大量に使う場合などはコードの可読性を損うことに繋がります。
なので、こういった同じ記述に対しては『Withステートメント』を用いて省略すると良いです。
Withステートメントの記述方法
『Withステートメント』の記述の仕方は下の通りです。
With object
[statements(処理)]
End With
Withキーワードのあとに、オブジェクト(またはユーザー定義型)を指定します。
省略したい処理の末尾には「End With」を記述して完了です。
このWithステートメントを用いることで、入力の手間を省けます。
加えて、Withブロックで一連の処理を括ることで対象オブジェクトが明確になり、可読性を高める効果も期待できます。
Withステートメントの参考コード
ここではWithステートメントの2つのパターンについて解説します。
シンプルなWithステートメントの参考コード
同じオブジェクトのメンバーに連続してアクセスしたい時がありますよね。
例えば、下のような状況とかあります。
1 2 3 4 5 |
Sub sample1() Sheets("Sheet1").Range("A1").Value = 1234 'セルの値 Sheets("Sheet1").Range("A1").Interior.Color = RGB(255, 255, 0) 'セルの背景色 Sheets("Sheet1").Range("A1").Font.Color = RGB(255, 0, 0) '文字の色 End Sub |
上のコードの場合、「Sheets(“Sheet1”).Range(“A1”)」を何度も書くのは見栄えが悪いです。
ですが、『With』を用いると下のようになります。
1 2 3 4 5 6 7 |
Sub sample2() With Sheets("Sheet1").Range("A1") .Value = 1234 'セルの値 .Interior.Color = RGB(255, 255, 0) 'セルの背景色 .Font.Color = RGB(255, 0, 0) '文字の色 End With End Sub |
Withステートメントのネスト(2重ブロック)
次にWithブロックが複数必要な場合についてです。
例えば、下のようなコードがWithブロックが2重にしたときのモノです。
1 2 3 4 5 6 7 8 9 10 11 |
Sub sample3() With Sheets("Sheet1").Range("A1") .Value = 1234 'セルの値 .Interior.Color = RGB(255, 255, 0) 'セルの背景色 With .Font .Color = RGB(255, 0, 0) '文字の色 .Size = 18 '文字の大きさ .FontStyle = "Bold Italic" '文字形式 End With End With End Sub |
3、4行目が「A1セル」対象にし、6~8行目が「A1セルの文字」を対象にしています。
上のようにオブジェクトが親子関係にある場合は、Withステートメントを入れ子関係にすることで、複数のオブジェクトでもWithブロックで対象にすることができます。
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク