BizFAQ-ビズファックBizFAQ-ビズファック仕事・ビジネスにおけるちょっと困ったこと、わからないことをズバリ解決お悩み解決サイトです。GenVBAでセルを指定する時、Rangeオブジェクトを使うことが多いですが、For文と組み合わせて使いづらいという欠点があります。Rangeオブジェクトは文字列で、しかもアルファベットを含んでいるので結構大変です。VBAのCellsは行と列を両方とも数字で指定するので、For文との親和性がとても高いのです。Cellsは上位オブジェクトがなにかで挙動が変わりますのでそれについても解説します。SubVBAのCellsを使いこなす使い分けとして、Cellsは基本的に「1つの」セルを指定します。1つ以上のセルを指定するのがRangeです。Rangeの使い方はRangeの記事をご覧ください。いつもどおり九九のVBAを下敷きにしますのでわからない方はForの記事をどうぞ。1.CellsオブジェクトとはCellsはWorksheetオブジェクトに用意されているオブジェクトです。Cellsをいきなり書いた場合Cellsの前には「Activesheet」を付加してVBAは解釈します。省略して書いた場合、何が補完されるのかというのは大事な問題ですので不安な方は確認して下さい。ColumnIndex)です。2.サンプルコードを書く今回のサンプルは九九のコードを下敷きにします。Subこのコードで使用しているのがCellsオブジェクトです。CellsのRowIndexは普通のシートと同じですが、ColumnIndexはA列が1,B列が2というふうに対応しています。3.Cellsの上位オブジェクトを指定する上位オブジェクトに指定できるのはVBAのWorksheetオブジェクトか、Rangeオブジェクトです。今回は「$B$2:$J$10」を指定します。余談ですが、このような時、「選択してイミディエイトウィンドウ」が便利だと思います。イミディエイトウィンドウにSelection.Addressと打つとEnterでアドレスが取得できます。取得したアドレスでマクロを修正します。Sub実行した結果がこちらです。上位オブジェクトを指定するということは「Cellsオブジェクトが見る領域」を指定するということです。省略した場合はシート全体でしたのでCellsからみた1行目とワークシートの1行目が一致していましたが、上位オブジェクトを指定した場合、Cellsからみた1行目とワークシートの1行目が一致するとは限りません。今回はCellsオブジェクトの解説をしました。上位オブジェクトを指定することでとても柔軟なVBAのコードが書けるようになります。柔軟性をもたせる意味でなくてもデフォルトオブジェクトをまったく意識しないのはバグの温床になりますので、注意して記述してください。