【VBA】変数の宣言をしてみよう
関数に続いて変数と言われるとなんのこっちゃ苦手意識を持つ人もいるかと思います。
関数はまだしも変数なんて数学で習ったっけ?と思ったのは他でもない僕です。
変数って何のことなのかイメージが掴めると気持ちがラクになるのでここいらで掴んでって下さい。
目次
変数ってなんぞや
ものすごく簡潔に言うと「値を入れる容器」みたいなものです。
こうして書いていると数学の証明とかでやったような気がしてくるのですが文系出身の僕は自信がないので掘り下げません。
代入したいからそのための入れ物を作ろう!ということす。
変数の宣言と代入
色々言葉でこねくり回すと迷走するのでまずは変数を作成して代入してみましょう。
Sub test()
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = 1
b = 2
c = 3
MsgBox a
End Sub
勘の良い人は何となく分かったと思います。
最初の「Dim」で始まっているところが「変数の宣言」で宣言した以降の「a~c」で代入しています。
そして代入した変数「a」をMsgBoxで呼び出しています。
書き方
Dim 変数名 [As データ型]
これが変数の書き方です。
上記の例をそのまま使い「Dim a As Integer」という宣言に当てはめてみましょう。
「a」が変数名でデータ型が「Integer」です。
つまりaという変数はInteger(整数)が入りますよ!と宣言しています。
データ型には色々種類があるので覚えるのに一苦労すると思いますが、そこは頑張りましょう。
暗記パンが欲しいですね。
頑張れとか言っておいてなんですが[As データ型]部分は実は省略可能。
とっても便利なものでデータ型を指定しないとVariant型っていう全てを格納できるデータ型に勝手になります。
身もふたもない…と思われたかもしれないですがデータ型によってメモリの使用量が違ったりするのです。
Integerが2バイトに対してVariantは16バイトだったり。
更に余談というか全然どうでも良いかもしれませんが「Dim」は「dimension」の略らしいです。
代入される順番
下記のような無意味なことをする人はなかなかいないと思いますが、代入される順番を見るには良いかと思うので書いてみます。
Sub test()
Dim a As Integer
Dim b As Integer
a = 1
b = 2
a = b
MsgBox a
End Sub
さて、この場合メッセージボックスでは何が表示されるでしょうか。
答えは「2」なんです。
日本語に直しましょう。
「aは1です。bは2です。1が入っているaは2が入っているbと同じです」
何言ってんだこいつとか思わないで下さいね。
処理される順番というかなんというかもどかしい感じがするのは重々承知なのですが、変数の容器のイメージを思い出してもらいながら「1が入っていたところに2が入ってきて1が押し出されちゃった」みたいな感じです。
Dim、Dim書くのが面倒な人へ朗報
Dim a As Integer
Dim b As Integer
と書くのが面倒な人は
Dim a As Integer,b As Integer
と書くことも可能です。
出来る事をよりイメージする為に
変数を宣言する中で次のような使い方もできます。
Sub test()
Dim a As Integer
Dim b As Integer
a = 100 + 10
b = 1
MsgBox a + b
End Sub
メッセージボックスにはaとbを加算した「111」が表示されます。
なんとなくでも変数を使って出来ることのイメージが膨らみませんか?
まとめ
変数の宣言「値を入れるための入れ物を作ってあげる」ということが何となくイメージしてもらえたら幸いです。
イメージできると最初に持っていた苦手な印象も払拭できるかと思います。