(VBAの技①)VBAを書く上で知っておいたほうが良いTIPSを紹介する①(Withで記述をシンプルにする)

次に具体的にプログラムを書いていく際に、書きやすくするシンプルなTIPSの一つとして「Withでまとめる」事について解説したいと思います。

<目次>

WITHは記述をまとめるプログラム

WITHは記述をまとめるプログラムです。使い方によっては記述の量を減らせるので重宝します。

例えばA1セルにテストと入力し、太字にした上でフォントサイズを20にしてみましょう。
普通に書けば以下のようになります。

Sub NORMAL()

Range("A1").Value="テスト"
Range("A1").Font.Bold=True
Range("A1").Font.Size=20

End sub

です。これでは、Range("A1")が3回も出てくるので記載が煩雑です。この場合出てくるセルが1つだけなのでよいですが、ブックやシートをまたがるとどのA1なのか混乱しますし、できるだけシンプルに書くということがミス防止にもつながりますので、なるべくまとめておきましょう。

具体的な書き方は以下です。

Sub USEWITH()

With Range("A1")
      
      .Value="テスト"
      .Font.Bold=True
      .Font.Size=20

End with

End sub

これで同様の効果を得られます。

WITHを入れ子にする

先ほどがWITHの基本的な使い方でした。ところでまだ共通の場所があったのがわかりますでしょうか。そうFontですね。WithをWithで入れ子にしてみましょう。

Sub USEWITH2()

With Range("A1")
      
      .Value="テスト"

      With .Font
            .Bold=True
            .Size=20
      End with      

End with

End sub


私はEnd Withの記述を忘れがちなので、自戒を込めて忘れないようにというアドバイスを贈りたいと思います。

同一オブジェクトに処理を重ねる場合には、「ウィィィズ!」の掛け声とともに記述をまとめてシンプルに記述してみてください。