Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » Columnsで取得した列を表すRangeを個別のRangeに

Columnsで取得した列を表すRangeを個別のRangeに

対象:Excel 2010, Excel 2013, Windows版Excel 2016

「excel vba collumns range 変換」
という検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスがありました。

判断に迷うキーワードですが、Columnsプロパティで取得した列を表すRangeオブジェクトを、

Columnsプロパティ

個々のセルを表すRangeオブジェクトにするには、どのようなオブジェクト式(オブジェクトを取得するコード)にすればいいのか探していたのかな、と推測しています。

[スポンサードリンク]

Range.Cellsプロパティで列を表すRangeを個別のRangeにできる

結論からお伝えします。
引数を2つ指定して使われることも多いCellsプロパティを、

Range.Cellsプロパティ

引数なしで使えば、Columnsプロパティで取得した列を表すRangeオブジェクトを、個別のRangeオブジェクトにできます。

Range.Cellsプロパティで列を表すRangeを個々のセルを表すRangeにするサンプルマクロ

以下のSubプロシージャで、Range.Cellsプロパティを使って、列を表すRangeオブジェクトを個別のRangeオブジェクトにできることを確認できます。

Sub Columnsで取得したRangeを個別のRangeに()
 Dim rng_col As Range
 Dim rng_itm As Range

 Set rng_col = Columns(1)
 Set rng_itm = rng_col.Cells
 Stop
End Sub

サンプルマクロで最低限確認すべきこと

上述のSubプロシージャをショートカットキー[F5]で実行すると、Stopステートメントでステップ実行モードになります。

この状態でローカルウィンドウを表示すると、下図のように2つのオブジェクト変数rng_colとrng_itmの中身を覗けます。

ローカルウィンドウ:オブジェクト変数

rng_colには、
  Set rng_col = Columns(1)
と1列目だけの列を表すRangeオブジェクトだけがセットされているので、Countプロパティは「1」です。

ローカルウィンドウ:列を表すRangeのCount

これに対しrng_itmには
  Set rng_itm = rng_col.Cells
とRange.Cellsプロパティで個々のセルを表すRangeオブジェクトがセットされているので、Countプロパティは「1048576」であることを確認できます。

ローカルウィンドウ:個々のセルを表すRangeのCount

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » Columnsで取得した列を表すRangeを個別のRangeに

「Cellsプロパティ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.