ということで、今回は「変数とは?」というテーマでお伝えします。
「変数」とはデータを保管する箱
変数とは、あとで使うデータを入れておくための箱です。VBAでは、この箱に何が入っているか分かりやすいように名前を付けておくのが通例となっています。
変数の名前を付けることを「変数宣言」、変数にデータを入れることを「値を代入する」と表現します。
変数を宣言するには、変数名の前に「Dim」と記述します。このコードを「Dimステートメント」といいいます。変数に値を代入するには、変数名に続いて「=」(イコール)と値を記述します。
変数宣言は 「Dim 変数名」と記述する。
値の代入は 「変数名=値」と記述する。
例えば、「身長」という名前の変数を宣言して、「180」という値を代入するには次のようなコードを記述します。
1 2 |
Dim 身長 身長 = 180 |
また、「身長=180」といったように、変数の代入で使われる「=」は、「代入演算子」と呼ばれるもので、数学で習うような「等号」ではありません。
数学では「左辺=右辺」と書くと、「左辺と右辺は等しい」という意味になります。しかし、代入演算子は「左辺に右辺を代入する」という意味になります。
つまり、「身長=180」というコードの場合、変数「身長」に「180」を代入するという意味になります。「身長」と「180」が等しいという意味ではありません。
VBAで使われる「=」(イコール)は「右辺を左辺に代入する」という意味の「代入演算子」
変数名をつけるときのルール
変数名の名付けには以下のルールがあります。
- 使える文字は、英数字、漢字、ひらがな、カタカナ、アンダースコア「_」
- 名前の先頭に数字と「_」は使えない
- VBAですでに使われている単語(予約語という)は使えない。(関数名とか)
変数宣言では「データの型」を指定しよう
変数を宣言する時は、中に入れるデータの種類を定義しましょう。
・データの種類があらかじめ分かっているので、処理速度が速くなる
・変数におかしな値が代入しようとしたら、エラーでしらせてくれるので予期せぬバグを防いでくれる
データの種類のことを「データ型」といいます。データ型を指定する時は、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キーで実行してみてください。
すると、メッセージボックスが表示されるかと思います。
1 2 3 4 5 6 7 8 |
Sub sample() Dim 身長 As Double ’変数宣言 身長 = Range("B3").Value MsgBox "田中さんの身長は" & 身長 & "センチです。" End Sub |
3行目で「身長」という返送を宣言しています。今回は小数点のある数値データなので、型は「Double」を指定しています。
このように、変数に代入する数値データの種類によって、データ型を指定しましょう。
変数宣言がなぜ必要か?
ここでは、変数宣言の必要性をお話ししておきます。
これまで「Dim 身長 As Double」のように変数宣言は行いましょう と説明してきました。
すみません。実はわたし嘘をついていました。
実はVBAの場合、変数は宣言しなくても使えます。試しに、先ほどのコードを変数宣言せずに実行してみましょう。
1 2 3 4 5 6 |
Sub sample() 身長 = Range("B3").Value MsgBox "田中さんの身長は" & 身長 & "センチです。" End Sub |
ほらね。もともと3行目にあった変数宣言を消しても、同じ結果を得ることができました。
実は、変数宣言するのは、予期せぬバグを防ぐため。
例えば、以下のコードを見てください。先ほどのコードをもう一度記述しました。
1 2 3 4 5 6 |
Sub sample() 身長 = Range("B3").Value MsgBox "田中さんの身長は" & 見長 & "センチです。" End Sub |
原因はわかりますか?
「MsgBox "田中さんの身長は" & 見長 & "センチです。"」の変数名が間違っています。これが、メッセージボックスに表示されない原因です。
このようなエラーを防ぐためには、「宣言しないと変数はつかえないようにする」のが有効です。
そのためには、先頭に「Option Explicit」と入力します。すると、宣言されていない変数はエラー表示し、間違っていることを教えてくれるようになります。
ちなみに、 「Option Explicit」は自動入力されるように設定できます。手順はこちらの記事を参考にしてみてください。
まとめ
- あとで使用する値を入れる「箱」のことを「変数」という
- 変数宣言は「Dim 変数名 As データ型」と記述する
- 値を代入する時は「変数名=値」と記述する
- 変数宣言の強制は必須
\ せっかく勉強するならVBAの資格を取ろう! /
文系にもオススメ
-
VBAエキスパートに合格するには?勉強時間と対策を解説
続きを見る