変数(へんすう)はVBAプログラミングだけに限らず、プログラミングにおいて最も重要な概念の一つです。今回は変数について学んでいきましょう!
変数とは?
変数は、プログラミングにおいて値を保存して再利用しておく仕組みです。変数はよく箱に例えられます。
変数(箱)に値を保存しておけば、後で箱から中身(値)を取り出して再利用することができます。
コンピューター的に具体的に言うと、変数の値はメモリに保存されます。メモリとはコンピューターの中の一時記憶装置のことで、色々なデータを一時的に保存しておくのに利用します。変数を操作する、ということはメモリを操作することとやっていることは同じです。
メモリとかコンピューター上の概念で考えると少しとっつきにくいのですが、初めは「変数は値を保存する箱」という直感的なイメージで捉えておいたほうがわかりやすいです。
変数の宣言
変数を使うには、まず宣言を行います。宣言?と聞いて何のこっちゃと思われたかもしれませんが、端的に言うとこの変数を使いますよ!という挨拶のようなもの(ちょっと違うかも)です。
宣言をすると、コンピューターのメモリに一定の領域が確保されます。例えて言うと、空き部屋だったマンションの契約が決まったので、他の入居者が入らないように部屋を確保しておく、というイメージになります。
変数の宣言は、以下のような方法で記述します。ここでは「チーム名」という変数を宣言しています。
1 |
Dim チーム名 |
変数はDimステートメントを使って宣言します。ステートメントとは命令文のことで、「この変数のためにメモリ内に領域を確保してください!」ということをDimステートメントを使って言っているわけです。
Dimステートメントの後には変数名を記述します。変数名はアルファベットだけでなく、日本語を使用することも可能です。他のプログラミング言語だと変数名に日本語を使えない言語も多いですが、VBAでは日本語も利用できます。
なお変数の宣言時には、「データ型」をいっしょに指定するのが一般的です。データ型はAs句を使って指定します。変数「チーム名」には文字列を格納するので、文字列のデータ型である「String」をAs句の後に記述しています。
1 |
Dim チーム名 As String |
データ型にはString(文字列型)やInteger型など、様々なタイプがあります。すべてのデータ型を覚えておく必要はありませんが、主要なデータ型ぐらいは覚えておくといいでしょう。
変数に値を代入(Letステートメント)
変数に値を入れることを一般的に「代入」といいます。変数に値を代入するには、Letステートメントと、=(イコール)記号を使用します。以下の例では、変数『チーム名』にLetステートメントを使用して『ジャイアンツ』という値を代入しています。
1 2 |
Dim チーム名 as String Let チーム名 = "ジャイアンツ" |
変数のデータ型が文字列なので、文字列をダブルクオーテーションで囲っています。ダブルクオーテーションがないとコンパイルエラーになります。
変数には、何度でも値を代入することができます。
1 2 3 4 |
Dim チーム名 as String Let チーム名 = "ジャイアンツ" Let チーム名 = "タイガース" |
変数の値を取り出す
変数に入れた値を取り出してみましょう。変数に値を仕舞いっぱなしのままでは、宝の持ち腐れになってしまいます。変数の中身は使ってこそ意味があるのです。debug.print文で変数「チーム」の値を出力してみましょう。
1 2 3 4 |
Dim チーム名 as String チーム名 = "ジャイアンツ" debug.print チーム |
取り出すと言っても、値をイミディエイトウィンドウに表示しているだけですから、特に意味はありませんが、実際はもっと役に立つ用途に利用したりします。値は別の変数にも再度代入することができます。
1 2 3 4 5 |
Dim チーム as String Dim TeamName as String チーム名 = "ドラゴンズ" TeamName = チーム名 '変数の値を別の変数に代入 |
変数の宣言は必須ではないが推奨事項
変数の宣言は必須ではありません。宣言を行わなくとも、エラーにはなりません。試しに以下のSubプロシージャを実行してみましょう。
1 2 |
チーム名 = "カープ" Debug.Print チーム名 |
このように宣言を行わなくても変数を利用することができますが、あまり「お行儀」がよくない方法です。宣言をせずに変数を利用すると、変数の所在がわかりにくいので、予期せぬエラーなどが発生しても変数の所在を探しにくくなります。結果として、ソースコードのメンテナンス性の低さにつながってしまいます。宣言はできるだけ記述するほうがいいでしょう。