With ステートメントを使えば、作業の対象となるオブジェクトの記述が1回で済みます
前号では、次のようなコードを記述しました。
ActiveSheet.Name = ActiveSheet.Range("B2")
「ActiveSheet.Name」と「ActiveSheet.Range("B2")」は、どちらも編集中のシートのプロパティを表すものなので、「ActiveSheet」というコードが重複して記述されています。Withステートメントを使うと、この重複コードを省略することができるようになります。
With ActiveSheet
.Name = .Range("B2")
End With
「With」の後に、共通するオブジェクトの名前を記すと、「End With」行までの間では、オブジェクト名の記述を省略できるようになります。
なお、オブジェクト名の記述は省略できますが、オブジェクト名とプロパティをつなぐピリオド(.)の記述は省略できません。たとえば、「ActiveSheet.Name」なら、「ActiveSheet」だけを省略でき、それ以降の「.Name」を記述することになります。
メソッドの記述も省略できます
たとえば、同じ「ActiveSheet」オブジェクトに対するコードなら、Worksheet.Copy メソッドの記述も、次のように省略できます。
Sub SheetNameWith()
With ActiveSheet
.Name = .Range("B2")
.Copy
End With
End Sub
このマクロを実行すると、編集中のシートの名前が、B2セルのデータと同じになってから、そのシートが新しいブックにコピーされます。
