Excel VBA をはじめとするプログラミング言語では、変数という概念が出てきます。
数学で変数を勉強したことがある人は多いと思いますが、それをプログラミングで使うというのはどういうことなのか?
プログラミングが未経験あるいは始めたばかりの方はピンとこないと思います。
今日は、Excel VBA(マクロ)を取り上げて、
●変数をどのように使うのか?
についてお話しします。
1、Excel VBA(マクロ)における変数とは?
変数には値が入ります。そして、その値はいつも同じではありません。
言葉のとおり固定されたものではなく変化します。
変数の説明でよくあるのが、モノを入れる箱みたいなものという例えです。
それを自分なりに説明してみたいと思います。
例えば野菜を1個だけ入れることができる箱があったとします。
この箱の中に入っている野菜はいつも同じではありません。
ある時はきゅうり、またある時はなす、そしてまたある時はにんじんが入っているという具合です。
プログラミングに置き換えると
●野菜を入れる箱が変数
●箱に入っている野菜が値
ということになります。
2、Excel VBA(マクロ)における変数の使い方
アルファベットを使って表すのが一般的
変数はアルファベットを使って表すのが一般的です。
数学でよく x、y を使って、y = x + 5 のように書いたりしますが、この x、y のことを変数と呼びますよね。
それと同じで、Excel VBA でも一般的にはアルファベットを使って表します。
また、日本語(ひらがな、漢字、カタカナ)を使って表すこともできます。
数字を混ぜることもできますが、最初の一文字目はアルファベットか日本語でなければいけません。
以下は正しい
x
xx
x1
x125
エックス
えっくす
変数例1
以下はダメ
125x
変数に入る値は数字とは限らない
変数「x1」があったとして
x1= 5
とすれば、x1 という変数に 5 という値を入れたことになります。
また、
x1= 10
とすれば、x1という変数に 10 という値を入れたことになります。
変数に入る値は数字とは限りません。
次のように文字列を入れることもできます。
x1= ”こんにちは!”
変数の定義
変数の型を定義する
さて、変数は型を定義して使うのが一般的です。
型というのは、変数に入れることができる値の種類という意味になります。
整数、文字列など様々な種類があるわけです。
Dim x1 as Integer
と記述すれば、x1 を整数(-32,768~32,767)として定義していることになり、x1 には整数以外の値を入れることはできません。
上記のように定義した状態で
x1 = 100
と記述して変数 x1 に整数 100 を入れることはできます。
以下のコードを実行してみましょう!
1 2 3 4 5 6 7 8 9 |
Sub Test() Dim x1 As Integer x1 = 12 MsgBox x1 End Sub |
MsgBox はメッセージボックスを表示する関数です。
MsgBox x1
と記述すれば、変数 x1 に入っている値を表示できます。
上記のコードを実行すると、以下のメッセージボックスが表示されます。正しく動作していますね!
さて、整数として定義した変数 x1 に以下のように文字列を入れ込むとコードが正しく実行されません。
x1 = “こんにちは!”
以下のコードを実行してみましょう!
1 2 3 4 5 6 7 8 9 |
Sub Test() Dim x1 As Integer x1 = "こんにちは!" MsgBox x1 End Sub |
以下の実行時エラーが表示されます。
値が変数の型と合っていないからです。
変数の型の定義とは?
さて、変数の型の定義についてお話ししましたが、例えを交えながら説明したいと思います。
先にお話ししました、野菜を1個だけ入れることができる箱があったとします。
プログラミングで置き換えると、
・箱が「変数」
・中に入るモノの種類である野菜が「型」
・実際に箱に入る野菜であるきゅうり、なすなどが「値」
ということになります。
この箱に入るモノは野菜でなければならないわけです。
果物を入れたら、箱が違うということになります。
VBA で言うところの「型が一致しません。」という実行時エラーになるわけですね。
果物を入れるなら、果物を入れるための箱を準備しなければいけません。
VBA で言えば正しく型を定義することになるわけです。
3、変数には最後に入れた値が入っている
変数に入れる値は何回でも変えることができます。
例えば、以下のようなコードの場合
1 2 3 4 5 6 7 8 9 10 11 |
Sub Test() Dim x1 As Integer x1 = 11 x1 = 2052 MsgBox x1 End Sub |
実行すると、2052 がメッセージボックスで表示されます。
最初に
x1 = 11
として、x1 に11を入れているのですが、その後に
x1 = 2052
として、2052 を入れています。
この場合、変数 x1 には最後に入れた値が入っていることになるわけです。
コードを書くときには、よく自分が意図していない値が変数に入ってしまっていることがあります。
変数に値を入れるときにミスをしていないかというのは、後々長いコードを書いてデバッグ(間違い探し)をするときに、重要なチェックポイントになります。
4、まとめ
Excel VBA(マクロ)における変数がどのようなものか? 説明してみました。
Excel VBA(マクロ)を使って、実用的な仕組みを作る場合にはほぼ必ず変数は使います。
その基礎の基礎として、どのようなものかしっかりと理解して頂きたいです。
編集後記
昨日は法人の決算を対応しました。
仕事の後は三島 YEG の山中城跡についての勉強会に出席。
懇親会も参加して楽しかったです!