「excel vba collumns range 変換」
という検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスがありました。
判断に迷うキーワードですが、Columnsプロパティで取得した列を表すRangeオブジェクトを、
個々のセルを表すRangeオブジェクトにするには、どのようなオブジェクト式(オブジェクトを取得するコード)にすればいいのか探していたのかな、と推測しています。
Range.Cellsプロパティで列を表すRangeを個別のRangeにできる
結論からお伝えします。
引数を2つ指定して使われることも多いCellsプロパティを、
引数なしで使えば、Columnsプロパティで取得した列を表すRangeオブジェクトを、個別のRangeオブジェクトにできます。
Range.Cellsプロパティで列を表すRangeを個々のセルを表すRangeにするサンプルマクロ
以下のSubプロシージャで、Range.Cellsプロパティを使って、列を表す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」です。
これに対しrng_itmには
Set rng_itm = rng_col.Cells
とRange.Cellsプロパティで個々のセルを表すRangeオブジェクトがセットされているので、Countプロパティは「1048576」であることを確認できます。
- Newer:マクロの記録ダイアログの表示方法
- Older:1行で複数の変数を宣言する場合の注意点
Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » Columnsで取得した列を表すRangeを個別のRangeに