'表内のA列のセルだけを選択状態にする Intersect(Range("A1").CurrentRegion, Range("A1").EntireColumn).Select
表の特定の列をリストとして取得したい場合に使用するコードです
入力用のコンボボックスや、リストボックスなどのリストデータであったり
複数列を参照して特定のデータと一致するものに対応するデータを取り出す、いわゆるVlookup関数のように使用することができます
この場合に便利なのが、CurrentRegionプロパティとIntersectメソッドを組み合わせて取得する方法です
コードの解説
Intersect(Range("A1").CurrentRegion, Range("A1").EntireColumn).Select
1行で指定出来るために1行ステートメントとしていますが、分かりにくければ分割して順番に選択してもいいと思います
ループで大量に使用しなければ処理速度には影響しません
まず、この1行で実行した時の動きの確認です
A列の表範囲が選択されます
この時、表範囲なので最終行も同時に取得出来ています
これで、表全体ではなく特定の列のみを選択状態にする事が出来ます
次に、このコードを分割して解説していきます
Intersect(~~).Select
最初に出てくるのが、この部分です
これはIntersectメソッドです
引数内のセル範囲で重複した範囲を取得するメソッドです
これを使用することで、表範囲とA列の重複する範囲を取得することが出来ます
~(Range("A1").CurrentRegion, ~
次に出てくるのが、CurrentRegionプロパティです
このプロパティは、指定セルを含む表範囲を取得します
この時点で表全体が取得されます
~ Range("A1").EntireColumn)~
ここでは、EntireColumnプロパティを使用しています
このプロパティは、指定セルを含む列全体を取得します
これによりA列全体が取得された状態になります
なので、日本語にすると
A1セルを含む、表全体とA列全体の重複した範囲を選択する
と、いう形になります
なぜか日本語にしても分かりにくいのが不思議ですが、まあそうゆうことなんです
引数の2つ目のEntireColumnプロパティの指定セルアドレスをB1にすれば、B列を取得することが出来ます
1つ目はB1にしても、しなくてもどちらでも構いません