Excel VBAでは、Withステートメントを使ってシートやセルなどのオブジェクトを表す記述を減らし、プログラミングの可読性を高める事ができます。
Withステートメントとは?
Withステートメントは、
With 変数名
処理内容
End With
のように記述する事ができます。
下記のサンプル1は、「シート」という名称のエクセルシートをオブジェクト変数shに代入し、Withステートメントを使って変数shの記述を省略しつつ、セルA1~A5に対して文字列「A1」~「A5」を入力したサンプルになります。
・サンプル1
Sub Withステートメント() Dim sh As Worksheet ‘シート名を格納するための変数 Set sh = Worksheets(“シート”) ‘シート名を変数に格納 With sh .Cells(1, 1).Value = “A1” ‘指定したシートのセルA1に「A1」と入力 End With End Sub |
また下記のサンプル2では、指定したシート名のセルA1に文字列「A1」と入力していますが、このようにセル番地(セル範囲)を省略する使い方も可能です。
・サンプル2
Sub Withステートメント() Dim sh As Worksheet ‘シート名を格納するための変数 Set sh = Worksheets(“シート”) ‘シート名を変数に格納 With rng .Value = “A1” ‘指定したシートのセルA1に「A1」と入力 End With End Sub |
ただし、あまりにもむやみやたらと省略してしまうと、人によっては逆にプログラムが読みにくく感じる場合もあるかもしれませんので、臨機応変が良いかもしれないですね(笑)