ExcelVBA

【Excelマクロ入門】変数とは?プログラミング初心者にやさしく解説


悩んでる人
変数って何?なんか、難しそう....
特に文系の人には、馴染みのない「変数」。ただ、そんなに難しいものではない。やさしく教えてやろう。
Mr.マクロン

ということで、今回は「変数とは?」というテーマでお伝えします。




「変数」とはデータを保管する箱

変数とは、あとで使うデータを入れておくための箱です。VBAでは、この箱に何が入っているか分かりやすいように名前を付けておくのが通例となっています。

変数のイメージ

変数の名前を付けることを「変数宣言」、変数にデータを入れることを「値を代入する」と表現します。

変数を宣言するには、変数名の前に「Dim」と記述します。このコードを「Dimステートメント」といいいます。変数に値を代入するには、変数名に続いて「=」(イコール)と値を記述します。

変数宣言は 「Dim  変数名」と記述する。
値の代入は     「変数名=値」と記述する。



例えば、「身長」という名前の変数を宣言して、「180」という値を代入するには次のようなコードを記述します。

また、「身長=180」といったように、変数の代入で使われる「=」は、「代入演算子」と呼ばれるもので、数学で習うような「等号」ではありません。

数学では「左辺=右辺」と書くと、「左辺と右辺は等しい」という意味になります。しかし、代入演算子は「左辺に右辺を代入する」という意味になります。

つまり、「身長=180」というコードの場合、変数「身長」に「180」を代入するという意味になります。「身長」と「180」が等しいという意味ではありません。


VBAで使われる「=」(イコール)は「右辺を左辺に代入する」という意味の「代入演算子」



変数名をつけるときのルール

変数名の名付けには以下のルールがあります。

  • 使える文字は、英数字、漢字、ひらがな、カタカナ、アンダースコア「_」
  • 名前の先頭に数字と「_」は使えない
  • VBAですでに使われている単語(予約語という)は使えない。(関数名とか)



Mr.マクロン
もし間違った名前を付けてしまってもエラーで教えてくれるから大丈夫だ。
エラー画面



変数宣言では「データの型」を指定しよう

変数を宣言する時は、中に入れるデータの種類を定義しましょう。


悩んでる人
定義することで何のメリットがあるの?

・データの種類があらかじめ分かっているので、処理速度が速くなる
・変数におかしな値が代入しようとしたら、エラーでしらせてくれるので予期せぬバグを防いでくれる


データの種類のことを「データ型」といいます。データ型を指定する時は、Dimステートメントの末尾に「As データ型」を記述します。

データ型の指定 「Dim 変数 As データ型」



主なデータ型

データ型名前内容
Integer整数型-32,768 ~ 32,767 の整数
Long長整数型-2,147,483,648 ~ 2,147,483,647 の整数
Single単精度浮動小数点型負:-3.402823E38 ~ -1.401298E-45
正:1.401298E-45 ~ 3.402823E38
Double倍精度浮動小数点型負:-1.79769313486231E308 ~ -4.94065645841247E-324
正:4.94065645841247E-324 ~ 1.79769313486232E308
Currency通貨型-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807
Date日付型西暦100年1月1日 ~ 西暦9999年12月31日 の日付と時刻
String文字列型文字列
Booleanブール型True または False
Variantバリアント型なんでも

数値用のデータ型は複数あるので、どのデータ型を指定すればいいのか迷うと思いますが、以下のように使い分けます。

  • 123個、1500行 →整数型の「Long」
  • 37.7度、24.5㎞ → 倍精度浮動小数点型 の「Double」
  • ¥1,560     →通貨型の「Currency」
  • 123-A01 →文字列型の「String」


実践

それでは、実際に手を動かして実践してみましょう。VBEを開いて、以下のコードを入力し、F5キーで実行してみてください。

すると、メッセージボックスが表示されるかと思います。

3行目で「身長」という返送を宣言しています。今回は小数点のある数値データなので、型は「Double」を指定しています。

このように、変数に代入する数値データの種類によって、データ型を指定しましょう。


変数宣言がなぜ必要か?

ここでは、変数宣言の必要性をお話ししておきます。

これまで「Dim 身長 As Double」のように変数宣言は行いましょう と説明してきました。

すみません。実はわたし嘘をついていました。

実はVBAの場合、変数は宣言しなくても使えます。試しに、先ほどのコードを変数宣言せずに実行してみましょう。


ほらね。もともと3行目にあった変数宣言を消しても、同じ結果を得ることができました。





悩んでる人
ぇえーー!じゃあ、何のために変数宣言するの?

実は、変数宣言するのは、予期せぬバグを防ぐため


例えば、以下のコードを見てください。先ほどのコードをもう一度記述しました。


悩んでる人
あれ?メッセージボックスに身長が表示されていない!!


原因はわかりますか?

「MsgBox "田中さんの身長は" & 長 & "センチです。"」の変数名が間違っています。これが、メッセージボックスに表示されない原因です。

このようなエラーを防ぐためには、「宣言しないと変数はつかえないようにする」のが有効です。

そのためには、先頭に「Option Explicit」と入力します。すると、宣言されていない変数はエラー表示し、間違っていることを教えてくれるようになります。

ちなみに、 「Option Explicit」は自動入力されるように設定できます。手順はこちらの記事を参考にしてみてください。

まとめ

Mr.マクロン
最後にまとめだ!
  • あとで使用する値を入れる「箱」のことを「変数」という
  • 変数宣言は「Dim 変数名 As データ型」と記述する
  • 値を代入する時は「変数名=値」と記述する
  • 変数宣言の強制は必須





\ せっかく勉強するならVBAの資格を取ろう! /

文系にもオススメ

【合格体験記】エクセルマクロの資格に一発合格する方法

続きを見る

-ExcelVBA
-, ,