VBA With 構造

VBA Withは同一のオブジェクトの複数のプロパティとメソッドを組み合わせて、同じオブジェクト名の繰り返しに書き込みを回避し、プログラミングと操作の効率を向上させます。

Withのステートメント

With構造は、WithとEnd Withの2つのステートメントで構成され、オブジェクトのプロパティとメソッドはその間に記述されます。 基本的なステートメントは次のとおりです。

With [オブジェクト]

.[プロパティ] = [データ]
.[メソッド]
'他のプロパティとメソッド

End With

Withステートメントでは、オブジェクトのプロパティとメソッドはドット(.)記号で始まり、その後にオブジェクトのプロパティ名とメソッド名が続きます。

Withステートメントの例

次には例を挙げます。ワークブックでSheet1に新しい名前を設定し、ラベルの色を黒に設定して、最後にワークシートを非表示にします。

With構造を使わないと、コードは次となります。

Sub MyCode()

Worksheets("Sheet1").Name = "新しい名前"
Worksheets("Sheet1").Tab.ThemeColor = xlThemeColorLight1
Worksheets("Sheet1").Visible = xlSheetHidden

End Sub

ご覧のとおり、各ステートメントはWorksheets( “Sheet1″)の部分を反復に書き込みます。

With構造を使用すると、同じオブジェクト名を反復に書き込むことを回避できます。コードは次のとおりです。

Sub MyCode()

With Worksheets("Sheet1")
.Name = "新しい名前"
.Tab.ThemeColor = xlThemeColorLight1
.Visible = xlSheetHidden
End With

End Sub

With構造に子オブジェクトをネストする

With構造はネストすることもできます。つまり、With構造では、親オブジェクトのプロパティが他のオブジェクトである場合、この子オブジェクトに対してWith構造を使い続けます。

上の例では、ワークシートSheet1のA1:A10セル領域の背景色を設定し、フォントとフォントサイズを調整する必要がある場合は、次のコードを使用してください。

Sub MyCode()

With Worksheets("Sheet1")

.Name = "新しい名前"
.Tab.ThemeColor = xlThemeColorLight1
.Visible = xlSheetHidden

With .Range("A1:A10")
.Interior.ThemeColor = xlThemeColorAccent1
.Font.Size = 12
.Font.Name = "MS Mincho"
End With

End With

End Sub

まとめ

この記事では、VBAプログラム構造のWith構造について勉強しました。 With構造では、同一のオブジェクトの複数のプロパティとメソッドを組み合わせて、オブジェクト名の重複を回避できます。 さらに、With構造をネストすると、プログラミングとプログラム操作の効率をさらに向上させることができます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です