ExcelVBAのプログラミングをする中で、同じオブジェクト名を何回も記述するのは非常に面倒な作業であり、見づらいコーディング文となってしまいます。この問題を回避するために、With文を使用する事でオブジェクト名の記述省略ができ、スッキリしたコーディング文(見やすいコーディング文)を書く事ができます。このWith文の使い方について紹介します。
構文
記述方法は以下の様になります。
With [オブジェクト名]
.[処理1]
.[処理2]
.[処理3]
・
・
End With
[説明]:
同じオブジェクト名を省略する事ができます。
[オブジェクト名] | オブジェクト名を記述します。 |
[処理1] [処理2] [処理3] |
オブジェクト名に対する処理内容を記述します。 ※前に「.」(ドット)を記述する必要があります。 |
使い方
使い方について具体的に説明します。
(例①)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に変更して下さい。」との意味になります。
※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例]:
①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。また、B2セルが罫線で囲まれています。<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)
②結果は以下の様にB2セルの罫線が大きく表示されます。(行の高さ:30、列の幅:15に変更されます。)
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
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セルの上下左右に罫線を引いて下さい。」との意味になります。
※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例]:
①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)
②結果は以下の様にB2セルに罫線が引かれます。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
With文を使用した罫線を引く記述方法についての説明は以上です。
おわりに
With文は1つのオブジェクトに対する幾つかのプロパティ値の設定やメソッドを実行する場合にオブジェクト記述を省略する事ができます。簡潔で読みやすいコーディングを目指し、是非有効に活用してみて下さい。