初心者から実務利用者まで
わかりやすいVBA解説サイト
コードサンプル

セルに値を入力する

VBAでセルに値を入力する方法は2種類あります。
それぞれどんな書き方をするのかみてみましょう。

ひとみさん
ひとみさん
二通りの方法があるんですか?
遥先生
遥先生
それぞれどう違うのか説明していくわね。
この記事でわかること

・「Range」でセルに値を入力する方法
・「Cells」でセルに値を入力する方法
・結局、どちらをつかえばいいの?

まずは「Range」

エクセルではセルを指定する時に「A1」、「B2」などと座標を指定しますが
VBAでセルに値を入力する場合は、

Range(“ここにセルの場所を入力”).value = 入力する値

…と、書きます。

遥先生
遥先生
「Range」は英語で「範囲」などを意味する単語だけど
こういう呪文だと思って慣れるのがいいと思うわ。
ひとみさん
ひとみさん
「value」が「値の入力」に使う言葉ですね。

次が「Cells」

もう一つの方法で先ほどと同じB3セルに1を書き込んでみます。

B3セルは「3行目の2列目」にあります。
そのため、(3,2)と書き表す事ができます。


これを元にして

Cells(ここにセルの数字).Value = 入力する値

…と、書きます。

遥先生
遥先生
「Cells」は「セル」のことだけど
これもこういう呪文だと思って覚えましょう。

結局どっちをつかえばいいの??

Excelではやり方が2通りあって、どちらを使っても結果は同じため
どちらを使うかは好み、ということがよくあります。

RangeとCellsも同じようにどちらを使っても
結果は同じなのですが、
用途によって使い分けの基準のようなものが存在しています。

入力するセルが変わらない場合はRange

値を入力するセルが「A1」や「B3」など、固定されていて
マクロの動作中に変更されることが無い場合は
「Range」が使われることが多いです。

遥先生
遥先生
セルが動かないので「静的なセル」と言うのよ。

入力するセルが色々動く場合はCells

マクロの流れによって入力するセルがどこになるかわからない場合、
同じマクロなのに起動する度に「C5」や「E7」など
入力されるセルが変わるような場合は
「Cells」が使われることが多いです。

Cells(x,y)などの様に変数と組み合わせて
x,yの値を入れ替えて、色々なセルを表現します。

遥先生
遥先生
こちらはセルが動くので「動的なセル」と呼びます。

ここで「Range」が使われにくいのは
「Range(“A1”)」などの(“A1”)の部分を書き換えて
色々なセルを表現するのはコードの書き方として
美しくない、手間がかかる、等の意見が多いためです。

しっかりとしたルールはない世界の話

「Range」と「Cells」の使い分けについて説明をしましたが、
しっかりとした法律やルールがあるわけではありませんし、
「Range(“A” & i)」と書いて、「Range」で動的なセルを表す方法も存在します。

どうするのが一番使いやすいのか、他の人が読みやすいコードが書けるかを考えて
自分の中で基準となる「マイルール」を作成してみてください。

ひとみさん
ひとみさん
どちらも使えるようにして慣れていこうと思います!