
先日指定したオブジェクトの行を参照するRowsプロパティについて解説しました。
【Excel VBA】指定したオブジェクトの行を参照するRowsプロパティまとめ | Excelを制する者は人生を制す ~No Excel No Life~
もちろん、行だけではなく同じように列に関しても対応したプロパティとしてColumnsプロパティが存在します。
今回は指定したオブジェクトの列を参照するColumnsプロパティについてまとめていきます。
Columnsプロパティの基本構文
オブジェクト.Columns(インデックス番号)
オブジェクト
Columnsプロパティを指定するオブジェクトを指定します。
この部分は省略可能です。
省略すると、アクティブブックのアクティブシートを指定していることになります。(マクロを実行したときに開いているもの)
Rangeオブジェクトを指定すると、そのセルの中で指定した行を参照します。
オブジェクトに関しては下記記事をご参照ください。
Excelのオブジェクトの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
インデックス番号
Columnsプロパティで参照したい列番号のことで、整数もしくは列を示すアルファベットで指定します。
たとえば、E列を指定したい場合、5列目であることを示す「5」、もしくは「E」を指定してあげるということになります。
()[かっこ]含めてインデックス番号を省略すると全列を参照します。
使用例①【オブジェクトを指定した単一列選択】
もっともオーソドックスな使用例として単一列を参照します。
まず、Rangeオブジェクト指定ありのものです。
使用例としてSelectメソッド(対象オブジェクトを選択)を使用しています。(以後の使用例と共通)
1 2 3 |
Sub 単一列選択①() Range("B2").Columns(3).Select End Sub |
マクロの動作イメージ
B2セルから3列目のD2セルが選択されました。
使用例②【オブジェクトを省略して単一列選択】
同じく単一列を参照ですが、今度はオブジェクト指定なしのものです。
1 2 3 |
Sub 単一列選択②() Columns(3).Select End Sub |
マクロの動作イメージ
3列目が選択されました。
使用例③【オブジェクトを指定して複数列を選択】
続いて複数列を参照します。
複数列の場合、起点のインデックス番号と終点のインデックス番号の間に:[コロン]でつなげ、さらに””[ダブルクォーテーション]で囲ってあげます。
複数列の場合は整数ではなく必ずアルファベットで指定します。
まず、Rangeオブジェクト指定ありのものです。
1 2 3 |
Sub 複数列選択①() Range("B2").Columns("B:C").Select End Sub |
マクロの動作イメージ
B2セルから2・3列目となるC2:D2のセル範囲が選択されました。
使用例④【オブジェクトを省略して複数列を選択】
同じく複数列を参照ですが、今度はオブジェクト指定なしのものです。
1 2 3 |
Sub 複数列選択②() Columns("B:C").Select End Sub |
マクロの動作イメージ
B・C列が選択されました。
使用例⑤【オブジェクトを指定して全列を選択】
全列を選択する場合、()[かっこ]もインデックス番号も不要です。
まず、Rangeオブジェクト指定ありのものです。
1 2 3 |
Sub 全列選択①() Range("B2:B3").Columns.Select End Sub |
マクロの動作イメージ
指定したオブジェクト内の全列を選択します。
今回はRangeオブジェクトのB2:B3が全列となります。
指定のオブジェクトが単一セルであれば1列分のみの参照となります。
使用例⑥【オブジェクトを省略して全列を選択】
同じく全列を参照ですが、今度はオブジェクト指定なしのものです。
1 2 3 |
Sub 全列選択②() Columns.Select End Sub |
マクロの動作イメージ
ワークシート内の全列が選択されます。
使用例⑦【セル参照】
あまり美しいコードではありませんが、ワークシート上に入力している数字や文字列もRangeプロパティ上で参照することが可能です。
今回はB3セルに入っている「2」を列番号に組み込みたいとします。
その場合、Columnsプロパティ内のインデックス番号に「Range(“B3”)」とRangeプロパティを入れてあげるとB3セルの「2」の値を参照することが可能になります。
1 2 3 |
Sub セル参照() Range("B2").Columns(Range("B3")).Select End Sub |
マクロの動作イメージ
B2セルから2列目のC2セルが選択されました。
使用例⑧【変数参照】
同じプロシージャ内で設定している変数もColumnsプロパティの一部として使用可能です。
今回は変数iが「5」を示しており、インデックス番号として指定したいとします。
その場合、Columnsプロパティ内にインデックス番号の部分に変数「i」を入れてあげます。
先ほどの使用例⑦よりもコードが簡潔であるため、あらかじめセルの値を参照したい場合は変数に格納してから行なうと良いですね。
1 2 3 4 5 |
Sub 変数参照() Dim i As Integer i = 5 Range("B2").Columns(i).Select End Sub |
マクロの動作イメージ
B2セルから5列目のF2セルが選択されました。
まとめ
Rowsプロパティと同様にColumnsプロパティも引数の指定方法が単一の場合と複数の場合と全行の場合で若干記述の仕方が異なります。
また、オブジェクトの指定有無で動作も変わるため、実際にコードを試しながら活用されると理解度が高まると思います(・∀・)
Rowsプロパティとセットで覚えてしまうことをおすすめします。