配列の範囲取得の選択とコード
マクロ 90回
配列取得にCurrentRegionを使う理由
今回からは、表から取得した配列を縮小するコードを考えていきます。
その際に、前回は、なぜわざわざRange("A1").CurrentRegion.Select
のようにCurrentRegionを使うのかという疑問を持つ方がいるので、ここでは、範囲選択とコードの関係を先に説明します。
この記事では、以下の内容について解説しています。
- 1. テーブルから配列を取得してサイズ変更する方法。
- 2. 範囲の選択に CurrentRegion を使用する利点。
- 3. 範囲選択にショートカットと対応するマクロ コードを使用する方法。
- 4.範囲選択に単一の列を使用することの制限。
- 5. 空白セルが範囲選択とデータ取得に与える影響。
空白のセルで囲まれた範囲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. 途中で止まってしまいますね。そういうことを考えると全体を取得してから、必要な列に縮小していくという方が安全です。
それで、CurrentRegionを使うのです。