教えて!ExcelVBA!

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

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

f:id:m_kbou:20200417212606p:plain

ExcelVBAのプログラミングをする中で、同じオブジェクト名を何回も記述するのは非常に面倒な作業であり、見づらいコーディング文となってしまいます。この問題を回避するために、With文を使用する事でオブジェクト名の記述省略ができ、スッキリしたコーディング文(見やすいコーディング文)を書く事ができます。このWith文の使い方について紹介します。

 

 

構文

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

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

[説明]:

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

 

使い方

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

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

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

[プログラミング例]:

↓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に変更して下さい。」との意味になります。

f:id:m_kbou:20210205153057p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。また、B2セルが罫線で囲まれています。<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210226174913p:plain

②結果は以下の様にB2セルの罫線が大きく表示されます。(行の高さ:30、列の幅:15に変更されます。)

f:id:m_kbou:20210226174930p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

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

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

[プログラミング例]:

↓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:20210205153240p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210226175102p:plain

②結果は以下の様にB2セルに罫線が引かれます。

f:id:m_kbou:20210226175120p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

おわりに

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

 

紹介動画

youtu.be