【Excel VBA】Withステートメントを使ってプログラムを見やすくする

Excel VBA講座 開講中!

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」と入力
.Cells(2, 1).Value = “A2” ‘指定したシートのセルA2に「A2」と入力
.Cells(3, 1).Value = “A3” ‘指定したシートのセルA3に「A3」と入力
.Cells(4, 1).Value = “A4” ‘指定したシートのセルA4に「A4」と入力
.Cells(5, 1).Value = “A5” ‘指定したシートのセルA5に「A5」と入力

End With

End Sub

 

また下記のサンプル2では、指定したシート名のセルA1に文字列「A1」と入力していますが、このようにセル番地(セル範囲)を省略する使い方も可能です。

・サンプル2

Sub Withステートメント()

Dim sh As Worksheet ‘シート名を格納するための変数
Dim rng As Range ‘セル番地を格納するための変数

Set sh = Worksheets(“シート”) ‘シート名を変数に格納
Set rng = sh.Cells(1, 1) ‘セル番地を変数に格納

With rng

.Value = “A1” ‘指定したシートのセルA1に「A1」と入力
.Font.Bold = True ‘フォントを太字に変更

End With

End Sub

ただし、あまりにもむやみやたらと省略してしまうと、人によっては逆にプログラムが読みにくく感じる場合もあるかもしれませんので、臨機応変が良いかもしれないですね(笑)

タイトルとURLをコピーしました