配列の範囲取得の選択とコード
マクロ 90回
配列取得にCurrentRegionを使う理由
今回からは、表から取得した配列を縮小するコードを考えていきます。
その際に、前回は、なぜわざわざRange("A1").CurrentRegion.Select
のようにCurrentRegionを使うのかという疑問を持つ方がいるので、ここでは、範囲選択とコードの関係を先に説明します。
(サンプルファイルは、こちらから
マクロ講義のサンプルデータ)
空白のセルで囲まれた範囲CurrentRegionを取得する
1. 表から取得した配列を縮小するコードを考えていきます。

2. 2次元配列の行数はそのままで、列数は3列から2列にするというなケースです。

範囲を取得するショートカットとマクロコードの対応
3.空白で囲まれた範囲全体を取得するには、Ctrl + A で取得できます。

4. A1セルをアクティブにして、A列だけを選択したければ、Ctrl + ↓
A1セルから下に降りて、セレクト。Range("A1").End(xlDown).Select

5. 範囲を選択したければ、Ctrl + ↓ につづけて
さらに、Ctrlキーを押したまま→で右下セルに移動します。Ctrl + →

6.そしてセレクトします。Range("A1").End(xlDown).End(xlToright).Select
このようにコードで書くとCtrl + A と同様に、A1セルのCurrentRegionを選択できます。

7. 上の例では下に先に居りましたが、先に右端に移動してから、下に降りても同じことです。 Range("A1").End(xlToright).End(xlDown).Select

A列だけなら、CurrentRegioはいらない?
8. そうなると、A列だけなら、CurrentRegionを使う必要がない?のではないかという質問もいただきます。 確かにA列だけなら可能なことが多いです。

9.B列だけの選択などもできますね。 わざわざCurrentRegionを使って、リサイズしたりオフセットしたりする必要はないのではないかという疑問です。

10. ただ、完全にデータが埋まっているのなら大丈夫ですが、表の中に空白の部分があった場合に、列全体を選択できません。

11. 途中で止まってしまいますね。そういうことを考えると全体を取得してから、必要な列に縮小していくという方が安全です。
