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

vbawithstateeyecatch

エクセルVBAのWith~End Withの使い方について説明します。

VBAコードを簡潔に記述するステートメントになります。
可読性も向上しますのでどんどん使っていきましょう。

 

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

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

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

 

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

 

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

 

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

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

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

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

With 近畿地方

   .(の) 大阪府

   .(の) 京都府

   .(の) 兵庫県

   .(の) 滋賀県

   .(の) 奈良県

   .(の) 和歌山県

End With

 

四国地方.(の) 徳島県

東海地方.(の) 三重県

になります。

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

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

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

    .(の) 大阪市

    .(の) 堺市

    .(の) 吹田市

    .(の) 茨木市

    .(の) 東大阪市

    .(の) 羽曳野市

End With

のようになります。

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

 

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

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

 

説明順はこのようになります。

 

 

Withメソッドを使わない時

 

Withステートメントを使わない時

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

コード
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

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

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

コード
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

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

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

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

コード
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の使い方のまとめ

 

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

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

 

ちなみに、入れ子構造のWithは、逆に視認性や可読性が悪くなると思いますので、

Withステートメントの良さが失われると思います。

 

エクセルVBAを最初から学ぶための、ガイダンス記事はこちらです。

 

vbastudyeyecatch002エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習で良質な参考書を7冊選ぶ。良書との出会いは大切です

 

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできると思います。
エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。

 

このサイトでよく使うVBAのコードのトピックを纏めています。

「VBA最速理解」の記事一覧を開く

 

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

 

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