VBA|Range以外でセルに値を入れる(Cells)

エクセルVBA VBAでセルの操作



セルに値を入れるためにRangeオブジェクトを使いますが、Range(”A1″)のようにセル番号をいちいちダブルクオーテーションで囲むのはナンセンスじゃないでしょうか。

参考:Excel VBA入門 その16:セルに値(数字・文字)を入れる(Range, Value)

じつはVBAコードを作成するときは、ダブルクォーテーションで囲まない方法を多く使用することになりますので、その方法を紹介します。



Cells(行番号, 列番号)

Cellsプロパティを使っても、Rangeオブジェクトと同様にセルに値を入れたりセルを指定したりすることができます。

Cellsプロパティを使った記述方法は、

Cells(行番号 , 列番号)

です。

具体的には、以下のようになります。

Sub Cellsプロパティ()
  Cells(2,3).Value = 5   'セル番号C2に5を入れる。
End Sub

これでセル番号C2に数字5を入れることができます。

上記コードは、

Range(“C2”).Value = 5 

と同じ結果になります。

Cellsプロパティを使うときの注意点

Cellsプロパティを使うときは、以下のようなことに注意してください。

  • 「C2」のようにアルファベットを使わずに、行番号、列番号を数字で記述する
  • ダブルクォーテーションで囲まない

ここで、注意が必要なのは、RangeオブジェクトとCellsプロパティとでは、セル番号の指定が逆になることです。

Rangeの場合と、Cellsの場合を比較してみます。

Range(“C2”) = 5 つまり、Range(” 列 行 “)

Cells(2 , 3) = 5 つまり、Cells( 行 , 列 )

上を見比べてください。列と行の記述が、お互いに逆になっています。

ベテランでもたまに間違えることがありますので、注意してくださいね。

Cellsを使うメリット(Cellsは変数を使用できる)

さて、Cellsプロパティの記述方法を説明してきましたが、Cellsを使うメリットはあるのでしょうか?

セル番号は「A1」のように記述できずにわざわざ数字に変換しなくてはならないし、Rangeを使えば良くね? と思うと思いますが、Cellsを使う理由があります。

Cellsを使う一番の理由は、変数を使えることです。

つまり、セルを指定する際に、

Cells( 変数, 変数 )

という記述をすることができるのです。

具体的なコードは以下のとおりになります。

Sub 変数を使う()
  Dim a as Long
  Dim b as Long
  a = 2
  b = 3
  Cells( a , b ).Value = 5  'セルC2に5を入れる
End Sub

ちなみに、Rangeを使ってセルを指定する際には、変数を使用できません。

というか、Rangeを使うと変数が変数として認識されません

なぜかというと、Rangeを使った場合は、

Range( “変数” )

というように記述することになりますが、ダブルクォーテーションで囲まれた部分は文字列として認識されてしまい、 変数として認識されなくなってしまうからです。

一方で、Cells( 変数 , 変数 ) の記述はダブルクォーテーションで囲まれていないので、ちゃんと変数として認識されます。

したがって、Cellsの場合は変数を使用でき、一方でRangeの場合は変数を使用することができないのです。

セルの指定やセルに値を入れるときに変数を使用する場合は、Cellsプロパティを使うことになります。




VBAでセルの操作
ブイサバ【Excel VBAサバイバル】~とりあえずここに来れば解決できる~

コメント

タイトルとURLをコピーしました