【素人VBA】「With」は入力文字の省略につながる便利な構文です

ライフスタイル

素人が一からVBAを学んでます。

第3回目は「With」ステートメントについてです。

 

私はWEB上でなかなかこの情報にたどり着くことができませんでしたので…

同じように困っている方へ向けて、私なりの丁寧さでメモを残しておこうと思います。

(※PCでの閲覧をおすすめ)

スポンサーリンク

【With ~ End With】で文字の省略ができることを覚える

例)セルA1に「おはよう」と入力します。

また、太字、文字サイズ15ポイント、文字色を赤

に設定します。

 

私のような素人がVBAで記述していくと、下図のようになりそうですね。

Sub おはよう()
Range(“A1”) = “おはよう”
Range(“A1”).Font.Bold = True
Range(“A1”).Font.Size = 15
Range(“A1”).Font.ColorIndex = 3
End Sub

念のため、補足↓

  • Range(“A1”).Font.Bold = True
    ⇒A1セルの文字列を太字にする
  • Range(“A1”).Font.Size = 15
    ⇒A1セルの文字サイズを15ポイントにする
  • Range(“A1”).Font.ColorIndex = 3
    ⇒A1セルの文字色を赤にする

 

さて、この記述の仕方でもフツーに分かりやすいものではありますが

Range(“A1”)って何回も入力するの大変だよ・・・

って、思うときもしばしば。

 

なんとかRange(“A1”)の部分だけ省略できないだろうか?

で、そこで登場するのが「With」ステートメント。

 

実際にやってみた結果↓

 

記述は下記の通りです(空白部分とメモ書きはカット)。

Sub おはよう()
With Range(“A1”)
.Value = “おはよう”
.Font.Bold = True
.Font.Size = 15
.Font.ColorIndex = 3
End With
End Sub

 

今回の例を元に簡単に説明すると…

  • 指定した処理対象【Range(“A1”)】と、その処理対象に対する処理(太字にするとか)を
  • With ~ End Withで囲むことで
  • 処理対象【Range(“A1”)】の記述回数を減らせる

ということです。

 

Withがない場合は4回の【Range(“A1”)】を使用しましたが

Withを使った場合、【Range(“A1”)】の記述は1回で終わっています。

 

With Range(“A1”)

とすることで、End Withまでは記述の対象が一緒(With)だよ。

だから省略してもいいよ!

・・・ということなるわけですね。

 

初めてWithを見たときは「え、ナニコレ?わけわからん!」

などと敬遠していましたが、実際に理解するとかんたんな内容でした。

Withステートメントを使う上でのルール

まず1つは、対象の記述について。

今回の例ではWithの対象は【Range(“A1”)】ですが、あくまでも「セルの場所」や「セルの範囲」ということです。

 

最初、私は

With Range(“A1”) = “おはよう”

という風に記述してしまって、これは「おはようと入力する」という”命令”でしたのでエラーでかえってきました。

【= “おはよう”】の部分は記述できません。

 

なので、次の段で【.Value = “おはよう”】と入力した結果、エラーにはなりませんでした。

※.Valueは「入力する」という意味を持っています。

 

もう1つは、命令となるFontやValueなどの単語の前に「.(ピリオド)」を記述すること

.Fontや.Valueみたいに、セットで記述しましょう。

まとめ)withステートメントで入力文字の省略ができる

この技術をつかむことができれば、ダラダラとした構文がいくらかスッキリさせることができそうですよね。

 

誰が見ても分かりやすい記述を目指して

日々、VBAの修行に励んでいきたいと思います。

 

With ~ End With

ぜひ覚えておきたいところです。

コメント