VBAのWithの意味とは?使い方と注意点も解説
VBAを勉強していると、コードの中に「With」や「End With」といったコードが何度もでてきます。
Withを和訳すると「~と一緒に」と言った意味になりますが、VBAではどういうことか意味不明ですよね。
使い方を知ることで今後の効率化にも繋がりますので、是非知識として習得していきましょう。
VBAのWithの意味
VBAでWithを使用すると、同じコードを省略することができます。
例えば前の記事「VBAでワークブックを指定して記述する方法」で紹介したようにブック、シートを指定した場合、複数のコードを入力すると以下のようになります。
Workbooks(“Book1”).Worksheets(“sheet1”).Range(“A1”).Value = 1
Workbooks(“Book1”).Worksheets(“sheet1”).Range(“A2”).Value = 2
Workbooks(“Book1”).Worksheets(“sheet1”).Range(“A3”).Value = 3
Workbooks(“Book1”).Worksheets(“sheet1”).Range(“A4”).Value = 4
End Sub。
Workbooks(“Book1”).Worksheets(“sheet1”)というように何度もあると文字を見るのもしんどいですよね。
しかし、Withを使用すれば以下のようになります。
With Workbooks(“Book1”).Worksheets(“sheet1”)
.Range(“A1”).Value = 1
.Range(“A2”).Value = 2
.Range(“A3”).Value = 3
.Range(“A4”).Value = 4
End With
End Sub
With ステートメントを使用することでコードをかなり省略することが可能です。
マクロで様々な操作を行うには、複数の命令文を書く必要がある。この一つ一つの命令の文をステートメントという
VBAのWithの使い方
Withステートメントを使用するには3つの注意点があります。
- 最初にWithと省略したいコードを入力
- 最後にEnd With
- Tab を使ってコードを見やすくする
WithとEnd With
最初にWithを入れた後、必ず最後にEnd Withを記述する必要があります。
また、End Withを記述した後はコードの省略する意味が終わるので注意が必要です。
ひこコードの省略はWithとEnd Withの間のみ効果を表す
Withコードを見やすくする
With Workbooks(“Book1”).Worksheets(“sheet1”)
.Range(“A1”).Value = 1
.Range(“A2”).Value = 2
.Range(“A3”).Value = 3
.Range(“A4”).Value = 4
End With
End Sub
上記の書き方でも問題なく動作はできますが、VBAを書くときにはなるべく見やすくすることをおすすめします。
なぜならコードを書く本人も見やすいですが、他の人が編集するときにやりやすくなるような配慮が必要です。
一般的なWithの使い方の際は、途中のコードはTabキーを1回押してインデントを付けます。
Withを使うメリット
Withを使用する一番のメリットはコードを省略し、文字数を省略できるところでしょう。
しかし、実はそれ以外にもメンテナンスがしやすいというメリットもあります。
メンテナンスがしやすい
例えば今までずっとシート1に入力していたのを、フォーマットの変更でシート2に入力することになったとします。
一つずつ入力していたらすべての数字を変更しないといけませんが、Withを使っている場合は修正が1箇所のみで行えます。
まとめ
今回はVBAのWithの意味と使い方について紹介しました。
Withを使用した場合、コードを短く省略することができます。
打つ文字数を短くすることができますし、何か修正があったときのメンテナンスする時間を早くすることができ、結果的に効率的な作業に繋がります。
Withは使いこなすと他の人と大きな時間の差が生まれますので、是非おすすめです。
Excelの機能を使いこなすと、仕事の効率化から大きな時間短縮に繋がります。
仕事術のスキルが増えるとプライベートの時間を時間を増やすことができますので、当サイトで得た知識を是非活用していきましょう。