With~End Withの使い方。VBAコードを簡潔に記述する

vbawithstateeyecatch

With~End Withは記述の可読性向上のために重要です。

VBAコードを簡潔に記述するステートメントですので、どんどん利用していきましょう。

こんにちは、じゅんぱ店長(@junpa33)です。

エクセルVBAのコードの組み立てでは、視認性や可読性を上げるためにできるだけ記述を簡潔にしたいところです。

Withステートメントは、そういったコード記述を簡潔にする役割があります。

With~End Withの使い方。VBAコードを簡潔に記述する

vbawithp003

記述のルールがあり、方法を理解できればごく簡単に使えるようになると思います。

「例えば・・・」で説明しますと、このようなイメージです。

近畿地方には、大阪府と京都府と兵庫県と滋賀県と奈良県と和歌山県があり近県には徳島県と三重県があります。

これをWithの基本構文を使って説明します。

.ドットはよく書き忘れて構文エラーを出しがちですが、ドットを「の」と読むと書き忘れないと思います。

With 近畿地方

   .(の) 大阪府

   .(の) 京都府

   .(の) 兵庫県

   .(の) 滋賀県

   .(の) 奈良県

   .(の) 和歌山県

End With

四国地方.(の) 徳島県

東海地方.(の) 三重県

となります。

同じグループがある場合、それを纏めるのがWithになります。

大阪府には大阪市と堺市と吹田市と茨木市と東大阪市と羽曳野市があります。といった場合は、

With 近畿地方.(の) 大阪府

    .(の) 大阪市

    .(の) 堺市

    .(の) 吹田市

    .(の) 茨木市

    .(の) 東大阪市

    .(の) 羽曳野市

End With

のようになります。

全く難しくないですよね。

前回の記事でWithステートメントを使っていました。この記事の内容を参考にしていきます。

vbacleareyecatch シートクリアーを目的のメソッド別にVBA最速理解

説明順は次のように行います。

Withメソッドを使わない時

Withステートメントを利用しない時のコード記述はこのようになっています。

VBA
Sub クリアH()
  Worksheets("Sheet1").Cells.Clear
  Worksheets("Sheet1").DrawingObjects.Delete
  Worksheets("Sheet1").PageSetup.PrintTitleRows = False
  Worksheets("Sheet1").PageSetup.PrintArea = False
  Worksheets("Sheet1").PageSetup.RightHeader = ""
  Worksheets("Sheet1").PageSetup.CenterFooter = ""
End Sub

Withステートメントを使った時1

Withステートメントを利用した時1のコード記述です。

全然、見やすくなりました。

VBA
Sub クリアH()
  With Worksheets("Sheet1")
     .Cells.Clear
     .DrawingObjects.Delete
     .PageSetup.PrintTitleRows = False
     .PageSetup.PrintArea = False
     .PageSetup.RightHeader = ""
     .PageSetup.CenterFooter = ""
  End With
End Sub

Withステートメントを使った時2 入れ子構造

Withステートメントを利用した時2のコード記述です。

入れ子構造になっています。

あまり見やすくなったとは言えないような・・・

VBA
Sub クリアH()
  With Worksheets("Sheet1")
      .Cells.Clear
      .DrawingObjects.Delete
      With.PageSetup
    .PrintTitleRows = False
    .PrintArea = False
     .RightHeader = ""
     .CenterFooter = ""
   End With
  End With
End Sub

With~End Withの使い方のまとめ

vbawithp004

お読みいただいたように、Withステートメントはこのように全く難しくはないのではと思います。

非常に見やすくもなりますので、使える部分ではどんどん使っていく方が吉だと思います。

ちなみに、入れ子構造のWithは、逆に視認性や可読性が悪くなることもあり、

Withステートメントの良さが失われる場合もあると思っておきましょう。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。