エクセルVBAでColumnsという、セルの列を選択するプロパティがあります。読みはカラムズです。
複数列指定や変数利用、最終列取得などに記述テクニックも必要です。
こんにちは じゅんぱ店長 (@junpa33) です。
以前に、「 Rowsプロパティ」の説明をしました。Rowsはワークシート上の「行」に関わるプロパティでしたが、
今回は、「Columnsプロパティ」つまり「列」に関わるプロパティについてです。
Excel VBAを勉強しているときには、「Columns」は、それなりの頻度で出現してきます。
「Columnsプロパティ」と出てきた時に「ウン ?ウン?」どう読めばいい?
「コルムン!?」・・・ローマ字読みでは今回はちょっとハズレです。
読み方としては「カラムズ」と読みます。
文字表記の感じからは、列の複数形なので ” 列たち、列の集まり ” というイメージですが・・・。
それでは「 Columns」というプロパティについて話していきます。
- セルの範囲選択
- Range VS Cells !VBAで使えるのはどっち
- セルの範囲選択と設定は14のツールで対応する
- Rowsプロパティの働きと関連のメソッド
- Columnsプロパティでセルの列を指定する
- EntireRowとRowプロパティの違い
- EntireColumnとColumnの使い方
- Offsetプロパティは指定範囲を移動させる
- Resizeプロパティでセル範囲をサイズ変更
- CurrentRegionは連続データをまとめて掴む
- UnionとRangeの一括選択の働きを比較
- SpecialCellsメソッドはセル検索し選択する
- UsedRangeプロパティの使い方のコツ
- Endプロパティで上下左右の最終セルを取得
- データ入力済セルの最終行番号を取得する
コンテンツ
Columnsプロパティで列を選択し参照する
Columnsプロパティの使い方を初めから(記述方法から)説明していきます。
Columnsプロパティの記述方法
- 1列だけを選択する場合 ・・・
Columns ( 列番号 ) または Columns ( ” 列名 ” ) - 複数列を選択する場合 ・・・・
Columns ( ” 列名:列名 ” )
Columnsプロパティの範囲選択の例題
Columnsプロパティで可能な範囲選択を例題を入れて説明します。
1列だけを範囲選択する
3列目だけを選択します。参照値(数値)で表記します。
Sub Columnsサンプル1()
Columns(3).Select
End Sub
または、列名で表記した場合です。ダブルクォーテーションで囲まないとエラーになります。
Sub Columnsサンプル1_2()
Columns("C").Select
End Sub
連続した複数列を範囲選択する
C列、D列、E列を選択します。
素直にColumnsで複数列指定する
始まりの列名と終わりの列名の間にコロン(:)を挟みます。
Sub Columnsサンプル2()
Columns("C:E").Select
End Sub
指定範囲を拡大した形で範囲選択をする
Columnsプロパティでは1列だけ範囲指定して、それをResizeプロパティで3列に拡張します。
Sub Columnsサンプル2_2()
Columns(3).Resize(, 3).Select
End Sub
連続しない複数列を範囲選択する
Columnsプロパティ単体では、連続しない複数列を範囲選択することは出来ません。
Unionメソッドを使って、Columnsでのそれぞれの指定範囲を結合していきます。
Unionメソッドを使って、Columnsでのそれぞれの指定範囲を結合していきます。
Sub Columnsサンプル3()
Union(Columns(1), Columns("C:E"), Columns("H:I")).Select
End Sub
Columnsプロパティの参照を変数にしたい
列の指定範囲を変化させる必要がある時、Columnsプロパティの列参照の値を変数化させなければいけません。
上の説明の通り、
1列のみの指定の場合なら、参照値は整数値で対応できますので、変数化は可能です。
複数列の指定の場合だと、参照はアルファベット表記になりますので、変数化は非常に難しくなります。
連続した複数列を変数化対応させる
C列、D列、E列の範囲指定を参照を数値で表現する。
Rangeプロパティを利用する方法
Rangeプロパティ内の参照は、始点と終点ですので列数の変化に柔軟に対応させることが出来ます。
Sub Columnsサンプル4_1()
Range(Columns(3), Columns(5)).Select
End Sub
Resizeプロパティを利用する方法
Columnsサンプル2_2のコードになります。
起点となる列が決まれば、後は総列数が分かればOKです。VBAコード表記的には一番スマートになります。
Sub Columnsサンプル2_2()
Columns(3).Resize(, 3).Select
End Sub
Unionメソッドを利用する方法
Unionメソッドを使ってColumnsプロパティだけで結合させる場合は、列数分「Columns」の表記が必要になります。
Sub Columnsサンプル4_3()
Union(Columns(3), Columns(4), Columns(5)).Select
End Sub
EntireColumnプロパティを利用する方法
もはや、Columnsプロパティを利用していませんが、EntireColumnプロパティを使って指定することも出来ます。
Sub Columnsサンプル4_4()
Range(Cells(1, 3), Cells(1, 5)).EntireColumn.Select
End Sub
ColumnsプロパティはRangeオブジェクトを返す
Columnsプロパティは、Rowsプロパティと同じくRangeオブジェクトを返しますので、
関連プロパティとして、「Selectプロパティ」や「Valueプロパティ」だけでなく色々なプロパティを使うことが出来ます。
類似のプロパティを紹介します
「Columns」とスペルが表示がよく似たプロパティとして、「Column」と「EntireColumn」があります。
それぞれ「Columnプロパティ」と「EntireColumnプロパティ」と言います。
主な働きとしては、
- 「Columnプロパティ」は「Columnsプロパティ」と
つるんで連携して,列番号を取得する働きをします。 - 「EntireColumnプロパティ」は、「”Entire”は”全体”という意味」が示す通り、指定したセルが存在する列について、その列全体を範囲選択する働きをします。
それぞれ「Columnプロパティ」と「EntireColumnプロパティ」については、詳細は別記事で紹介します。
Columnsプロパティで範囲選択する まとめ
ColumnsプロパティはエクセルVBAの中でも重要なプロパティになりますので、記述方法や機能についてはしっかり覚えておくことが大切です。
セルの参照方法がRangeプロパティ同様にアルファベット表記が必要になりますが、プログラムコード作成上で表記方法が ” 上手くない ” ということが(ちょくちょく)発生します。
その場合、コード記述関連の周辺知識で乗り切らなければいけませんので、その周辺知識も含めて学習に心掛けておきましょう。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。