Excelマクロ「セルの入力」

前回、「セルの選択」をやりましたので、今回は選択したセルへ何かを入力してみます。

この「入力」という処理ですが、厳密に言うと「セルへの代入」という考え方をします。
VBAではこの「代入(だいにゅう)」という考え方が重要で、常に使います。
そして「代入」のルールはただ一つ、「右辺を左辺に代入する」ということだけです。

今回の場合、セルA1に「この文字列を代入」と入力します。

このサンプルコードをコピペし、実行してみましょう。
こうなりましたか?

「Cells(1,1)」ですが、「セルの選択」でも書いた通り、書き方は色々です。
Range(“A1”)でもOKです。

さて、これも代入なので、右辺を左辺に代入しています。
右辺 =「”この文字列を代入”」
左辺 =セルA1

「”~”」のことを、ダブルコーテーションと言います。
VBAでは、ダブルコーテーションで囲まれた文字列には意味があります。

試しに、これを実行してみましょうか。(「この文字列を代入」がダブルコーテーションで囲まれていません)

なにも起きないですね・・。

しかし、実はこれ、何も起きていないのではなく、ちゃんと処理されています。

答えを先に言うと・・
「この文字列を代入」を”~”で囲むと、文字列として扱われる
「この文字列を代入」を”~”で囲まないと、「変数」として扱われる
のです。

「変数」??
「変数」は、代入される対象の「ハコ」とご理解ください。

(本来、教科書的には、変数は「Dim~」で宣言しなくてはならない!とかなる、あれです。宣言しなくても、変数になるのです。)

試しに、こうすると解ります。

どうですか?解りましたか??
わからない場合は、こうしてみましょう。

つまり、下記で「何も起きない」ように思えたのは、実は変数が空っぽだったから、です。

何も起きなかったのではなく、実際にはブランクがセルA1に入力されていました。

まとめますと・・

  1. 文字列を代入する場合は、右辺を”~”(ダブルコーテーション)で囲む
  2. ダブルコーテーションで囲まないと、変数になる(なってしまう)

さて、面倒な話をします・・。
これを実行してみましょう。

こうなりますよね。

文字列の場合、ダブルコーテーションで囲む/囲まないで結果が異なったのに、数字の場合は結果が同じになりました。

これは「1」は変数として扱われないことを意味します。
VBAでの変数名にはルールがあり、Helpを見たのですが正直何言ってるのかわからん・・ので、ここでは「数字で始まる変数名は禁止」と覚えましょう。

 

Excelマクロの目次へ戻る