こんな指示を受けたとイメージしてください。営業マンの売上表にて、目標未達のセルを色付けするといったケースです。こんなときに活躍するがVBAの「Cells」なのです。ある範囲内においてセルを順番に選択する、これがCellsの大きな特徴です。その他Cellsにはさまざまな特徴があります。戻り値のRangeオブジェクトを使う方法という応用的な内容まで解説します。まとめCellsとはCellsとは、セルを個別に選択していくプロパティです。具体的には数値で行方向に何セル、縦方向に何セルという指定をします。似たような働きをするRangeもあります。Cellsは範囲を指定するというより、どちらかというと単独のセルをピックアップして操作する、といったイメージです。それだけでなく、シート全体や行全体、列全体といった指定も可能です。Rangeとの使い分けCellsには以下の特徴があります。変数で位置を指定できる。シート全体を指定できる。Rangeには以下の特徴があります。範囲につけた「名前」で呼び出せる。複数の範囲が指定できる。開始セルと終了セルを指定できる。範囲が変動の場合は、Cellsが適しています。逆に範囲が固定の場合は、Rangeが適しています。シート全部、または行・列をまるごと選択する場合はCellsでしかできません。複数の範囲を選択するのはRangeにしかできません。Rangeの使い方については、こちらのサイトで詳しく解説していますので、ぜひ参考にしてください。2019年9月26日Cellsの使い方ここでは、Cellsの使い方を具体的に見ていきましょう。Selectでセルを指定する方法Cellsは、行と列をインデックスで指定します。行インデックス).SelectC2を選択してみましょう。3)と考えるとわかりやすいでしょう。3)というのは分かりづらいですよね。「そのまま」指定することも可能です。Cells(2,”C”).Selectとすることもできます。C2なのに(2,”C”)と、指定する順番が逆になるので注意してくださいね。シート全体を指定する方法Cellsで行や列を指定しなければ、全セルを指定することになります。Pゴシックに設定してみましょう。Pゴシック以外のフォントで文字を表示させました。次のコードを実行します。Pゴシックに変わったのが分かります。Offsetで特定のセルから相対指定でセルを指定する方法あるセルを基準として、そこから行方向へや列方向へいくつという指定もできます。Sub[実行結果]B2から下へ1セル、右へ2セル進んだ結果、D3へ進みました。上や左へ進めるにはどうすればよいでしょうか?実はOffsetは負の値を指定することも可能です。行方向は正の値で右、負の値で左に進みます。列方向は正の値で下、負の値で上に進みます。冒頭で述べたとおり、Cellsの大きな特徴は変数でセルを指定できることです。列インデックスと行インデックスで位置を指定、と聞いて鋭い方は気づかれたかもしれませんね。Cellsのかっこの中に、そのまま変数を入れることができるのです!行カウンタをi、列カウンタをjとしてループ文を組んでみましょう。列カウンタ)という文字列を仕込んでみます。文字列」と記述します。Sub[実行結果]iとjは普通の変数(VBA以外の言語における変数と変わらないという意味で)としてプログラミングすることができます。iとjの両方とも1から5と固定しましたが、これらを算出するコードを作りそこから取得するといったことも可能です。RangeとCellsを使ってセルを指定する方法RangeとCellsの合わせ技でセルを指定してみましょう。Cellsは一番左上のセルを始点として行列を指定します。毎回そうではなく「フォームの決まった帳票の明細部分のみ範囲指定して処理をしたい」ということもあるでしょう。そんな場合、一番左上から数えて何行何列で・・・・とやってしまうと、かなり大変です。決まった範囲を決めてしまい、そこからCellsにてセルを指定することも可能です。Sub[実行結果]分かりやすくするために、rngで定義した範囲を赤にしています。どこが選択されたのか注目してください。2)によりB2のはずですが、C3が選択されています。B2からD6が範囲なので、B2を始点として行列ともに2ずつ動いてC3が選択されたというわけです。このように、Rangeとの合わせ技でCellsもさらに拡張できます。Rangeは以下の記事が参考になりますので、あわせて学習してみてください。2019年9月26日Rangeの引数にCellsを使う方法Rangeプロパティの引数にCellsプロパティを指定することで、セルの範囲を指定することが可能です。Cells2).SelectCells1からCells2の範囲を指定します。Sub[実行結果]戻り値のRangeオブジェクトを使う方法CellsプロパティはRangeオブジェクトを返します。返されたRangeオブジェクトを使ってValue、Copy、Clearなどのプロパティやメソッドを使うことができます。Valueで値を取得、変更する方法RangeオブジェクトからValueプロパティを呼び出すことで、セルの値を取得もしくは変更することができます。サンプルコードで確認しましょう。Sub[実行結果]Copyでセルをコピーする方法RangeオブジェクトからCopyメソッドを呼び出すことで、セルをコピーすることができます。サンプルコードで確認しましょう。Sub[実行結果]セルのコピーについては、こちらのサイトで詳しく解説していますので、ぜひ参考にしてください。2019年4月21日Clearでセルをクリアする方法Clearメソッドで指定した範囲をクリアすることができます。以下のような状態をクリアします。Sub[実行結果]RangeオブジェクトのClearメソッドの使い方については、こちらのサイトで詳しく解説しています。2019年9月26日VBAの将来性VBAのスキルを学んで業務を効率化したいこのように思っている人は多いでしょう。VBAの用途はさまざまで、VBAのスキルがあれば転職できるのでは?業務効率化のスキルは需要が高そうだからなどが上げられます。確かに、業務効率化はどこの企業も目指していて、需要が高いように見えます。VBAを扱えることが強みになるかといわれると、すこし疑問があります。VBAは基本的にエクセル上でしか使用することができません。最近では社内書式をスプレッドシートで管理している企業も増えており、今後エクセル自体の需要が少なくなってしまう可能性も考えられます。なってしまうと、VBAを習得しても活躍の場が限られてしまいますよね。考えると将来的にVBAの需要はあまり高くないといえます。VBAを学んでいる人はどうすればいいのでしょう。VBAの将来性や今後の対策などをこちらの記事でまとめているのでぜひご確認ください。2019年10月9日まとめ本記事ではCellsについて解説しました。Cellsはセルを選択するときに変数を利用できます。Rangeと合わせて使うともっと拡張できることがお分かりいただけたでしょうか。ご自身で勉強を深めるとともに、Rangeの参考記事と合わせていろいろ試してみてくださいね!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。関西在住のITエンジニアです。普通の会社に勤務しながら、侍エンジニアのインストラクター、ライターとして活動しています。