【VBA講座】Withステートメントについて

Withステートメントはコードの
 ・保守性を向上
 ・可読性を向上
させる仕組みです!

Withステートメントの使用により
 ・同じコードを何度も記述せずにすむ
ようになります!

またWithステートメントの使用により
 ・コードの記述量が減り
 ・コードがスッキリする
します!

PR

前提

一般的な話として
 ・同じコードを何度も記述するのは良くない
と言われています。
※VBAに限定した話ではないです。全てのプログラミング言語に共通する話です。

理由は
 ・当該コードを修正することになった場合、
 ・同じコードが複数(例えば5個)あると、
 ・複数の箇所(例えば5ヶ所)を修正しないといけない
ためです。

人はミスをする生き物です。ミスを0にすることはできません。
ただミスを少なくする努力はできます。

修正する箇所が多ければ多いほど、ミスをする可能性が上がります。
修正する箇所が少なければ少ないほど、ミスをする可能性が下がります。
※10ヶ所を修正するより1ヶ所を修正する方が、ミスをする可能性が低いです。

よって仕様変更等が起きた際に、
 ・修正する箇所が少ないコードが良いコード
 ・ミスする可能性が低いコード(=保守性の良いコード)
と言われています。

PR

Withステートメントとは

Withステートメントはコードの
 ・保守性を向上
 ・可読性を向上
させる仕組みです。
※VBA以外のプログラミング言語にもあります。
※どのプログラミング言語にもほぼあります。「あるある」な仕組みです。

Withステートメントを使用することで
 ・コードの記述量が減り
 ・コードがスッキリする
します。
※ゴチャゴチャしているよりスッキリしている方が何かと良いです。

PR

Withステートメントを使用しない場合

例えばWithステートメントを「使用しない場合」、にシート「sample」のセル「B2」に
 ・文字列「aiueo」を設定
 ・文字色を赤
 ・太字
にする場合、以下となります。

Sub test()

    Worksheets("sample").range("B2").Value = "aiueo"
    Worksheets("sample").range("B2").Font.Color = XlRgbColor.rgbRed
    Worksheets("sample").range("B2").Font.Bold = True
    
End Sub


上記の通り
 ・「Worksheets(“sample”).range(“B2”)」の記述を3回
しなければなりません。
※同じコードを複数記述しなければなりません。

そのため、例えば処理対象のシートを「sample」から別のシートへ変更することになった場合、3ヶ所を修正しなければなりません。
※複数の箇所を修正しなければなりません。

PR

Withステートメントを使用する場合

同様の処理をWithステートメントを「使用する場合」だと、以下になります。

Sub test()

    With Worksheets("sample").range("B2")
        .Value = "aiueo"
        .Font.Color = XlRgbColor.rgbRed
        .Font.Bold = True
    End With
    
End Sub


上記の通り
 ・「Worksheets(“sample”).range(“B2”)」の記述が1回
ですむようになります。
※同じコードの記載を少なくすることができます。

そのため、例えば処理対象のシートを「sample」から別のシートへ変更することになった場合、1ヶ所のみを修正すれば良いです。
※修正箇所を少なくすることができました。
※ミスをする可能性を下げることができました。

修正箇所が少ないため「保守性の良いコード」となります。

また同じ記述を少なくすることより
 ・コードの記述量が減り
 ・コードがスッキリする
ため、可読性の良いコードとなります。

PR

参考①

以下の記事に
 ・Withステートメントを使用したVBAコード
を記載しています。

あわせてご確認いただければと思います。





PR

参考②

Withステートメントの詳細について、公式サイトをご確認ください。

タイトルとURLをコピーしました