【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ステートメントの詳細について、公式サイトをご確認ください。


PR

参考③

「同じコードを何度も記述するのは良くない(=重複は良くない)」というのは、一般的に「DRY原則」と言われています。

「DRY」とは「Don’t Repeat Your Self(繰り返しを避けること)」の略称です。


「DRY原則」の詳細は、以下をご確認ください。

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