教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について説明していきます。

【ExcelVBA 構文】With文(オブジェクト名の記述省略)の使い方を知りたいです。教えて!

       f:id:m_kbou:20200417212606p:plain

同じオブジェクト名を何回も記述するのは非常に面倒な作業となります。With文を使用するとオブジェクト名の記述省略ができ、スッキリしたコーディング文(見やすいコーディング文)を書く事ができます。

 

【目次】

 

構文

記述方法は以下の様になります。 

=======================================================================

With [省略するオブジェクト名]
     .[オブジェクトに対する処理]
End With

=======================================================================

[説明]:

[省略するオブジェクト名]にはオブジェクト名を記述します。[オブジェクトに対する処理]には上記の[省略するオブジェクト名]で記述したオブジェクト名に対する処理内容述します。また、[オブジェクトに対する処理]の前には、必ず「.」(ピリオド)を記述する必要があります。内容を纏めると、「[省略するオブジェクト名]で指定したオブジェクトに対し、[オブジェクトに対する処理]で記述した処理内容を実施して下さい。」との意味になります。

 

使い方

使い方について、具体的に説明していきます。

(例①)With文を使用した行の高さと列の幅を変更する記述方法

With文を使用した行の高さと列の幅を変更する記述方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

↓With文を使用しない記述

-------------------------------------------------

Sub サンプル()

    Range("B2").RowHeight = 30
    Range("B2").ColumnWidth = 15
   
End Sub

-------------------------------------------------

With文を使用した記述

-------------------------------------------------

Sub サンプル()

    With Range("B2")
        .RowHeight = 30
        .ColumnWidth = 15
    End With
   
End Sub

-------------------------------------------------

どちらも同じ内容となり、「B2セルの行の高さを30、列の幅を15に変更して下さい。」との意味になります。

[実行例]:

(実行前)

※B2セルの上下左右を罫線で囲みます。(セルの大きさが通常時の大きさ)

f:id:m_kbou:20200318112351p:plain

(実行後)

※B2セルの罫線が大きく表示されます。(行の高さ:30、列の幅:15に変更)

f:id:m_kbou:20200318112402p:plain

With文を使用した行の高さと列の幅を変更する記述方法についての説明は以上です。

 

(例②)With文を使用した罫線を引く記述方法

With文を使用した罫線を引く記述方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

With文を使用しない記述

-------------------------------------------------

Sub サンプル()

    '↓上線を引く
    Range("B2").Borders(xlEdgeTop).LineStyle = xlContinuous
    '↓下線を引く
    Range("B2").Borders(xlEdgeBottom).LineStyle = xlContinuous
    '↓左線を引く
    Range("B2").Borders(xlEdgeLeft).LineStyle = xlContinuous
    '↓右線を引く
    Range("B2").Borders(xlEdgeRight).LineStyle = xlContinuous

End Sub

-------------------------------------------------

With文を使用した記述

-------------------------------------------------

Sub サンプル()

    With Range("B2")
        '↓上線を引く
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        '↓下線を引く
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        '↓左線を引く
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        '↓右線を引く
        .Borders(xlEdgeRight).LineStyle = xlContinuous
    End With

End Sub

-------------------------------------------------

どちらも同じ内容となり、「B2セルの上下左右に罫線を引いて下さい。」との意味になります。

[実行例]:

(実行前)

※通常のシートを表示します。

f:id:m_kbou:20200318112417p:plain

(実行後)

※B2セルの上下左右に罫線が引かれます。

f:id:m_kbou:20200318112428p:plain

With文を使用した罫線を引く記述方法についての説明は以上です。

 

おわりに

With文は1つのオブジェクトに対する幾つかのプロパティ値の設定やメソッドを実行する場合にオブジェクト記述を省略する事ができます。簡潔で読みやすいコーディングを目指し、是非有効に活用してみて下さい。