Excel VBAの変数とは?宣言・型指定・初期値の基本をやさしく解説
生徒
「VBAのコードを見ていると、最初に『Dim』とか『Integer』とか書いてあるんですが、これって何ですか?」
先生
「それは『変数(へんすう)』を使いますよ、という宣言ですね。プログラミングでは、データを入れておく『箱』のようなものが必要なんです。」
生徒
「箱ですか?わざわざ用意しなくても、そのまま計算したり表示したりすればいいような気がするんですけど…。」
先生
「変数を使わないと、何度も同じ値を手入力したり、後から値を変更するのが大変になったりするんですよ。今日はその基本をしっかりマスターしましょう!」
1. 変数とは「データを入れる名前付きの箱」
Excel VBA(エクセル・ブイビーエー)を学ぶ上で、避けて通れないのが「変数(へんすう)」です。プログラミング未経験の方には聞き慣れない言葉かもしれませんが、難しく考える必要はありません。
変数は、一言で言うと「データを入れておくための一時的な箱」です。例えば、あなたが買い物に行くとき、財布の中に「お金」を入れますよね。この「財布」が変数で、「中身の金額」がデータに当たります。中身が1,000円だったり5,000円だったりと、状況によって中身(数値や文字)が入れ替わる(変わる数)から「変数」と呼ぶのです。
VBAでこの「箱」を使うことで、計算結果を一時的に保存したり、名前などの文字列を使いまわしたりすることが可能になり、Excelの自動化が非常にスムーズになります。
2. 変数を使うための第一歩「宣言」を覚えよう
VBAの世界では、勝手に箱(変数)を使い始めることはできません。「これからこういう名前の箱を使いますよ!」とエクセルに教えてあげる必要があります。これを「変数の宣言(せんげん)」と言います。
宣言には、主に Dim(ディム)というキーワードを使います。これは「Dimension(ディメンション:次元・範囲)」の略ですが、初心者のうちは「箱を用意しろ!」という命令だと覚えておけば大丈夫です。
Sub StartVariable()
' 変数の宣言
Dim score As Integer
' 変数に値を入れる
score = 100
' メッセージボックスで中身を表示
MsgBox score
End Sub
上記のコードでは、score(スコア)という名前の箱を一つ用意して、その中に100という数字を入れています。最後に MsgBox でその中身を確認しています。プログラムの中で「100」と直接書かずに、あえて「箱の名前(score)」を使うのがプログラミングのコツです。
3. 箱の種類を決める「データ型」の指定
変数を宣言するとき、箱の名前に続けて As Integer(アズ・インテジャー)のように書きました。この「As 〜」の部分が「データ型(だーたがた)」の指定です。これは、「この箱にはどんな種類のデータを入れますか?」という指定です。
例えば、牛乳を入れるには牛乳パック、手紙を入れるには封筒が必要なように、データにも適切な種類があります。代表的な型は以下の通りです。
| データ型 | 読み方 | 入れるもの |
|---|---|---|
| Integer | インテジャー | 整数(-32,768 〜 32,767) |
| Long | ロング | 大きな整数(行番号などはこちら) |
| String | ストリング | 文字列(名前やメッセージなど) |
| Double | ダブル | 小数(1.23など) |
| Date | デイト | 日付や時刻 |
もし、整数の箱(Integer)に「こんにちは」という文字を入れようとすると、VBAは「型が違いますよ!」とエラーを出してくれます。これにより、プログラムのミスを未然に防ぐことができるのです。
4. 文字列を入れる変数の使い方
数値だけでなく、文字を扱う変数もよく使います。文字を扱う型は String(ストリング)です。VBAで文字を扱うときの最大のルールは、文字を " "(ダブルクォーテーション)で囲むことです。
Sub StringMessage()
' 文字を入れる箱を用意
Dim personName As String
' 文字を代入(ダブルクォーテーションで囲む!)
personName = "田中さん"
' 挨拶メッセージを作る
MsgBox "こんにちは、" & personName & "!"
End Sub
実行結果は以下のようになります。
こんにちは、田中さん!
&(アンパサンド)は、文字と文字をくっつける「のり」のような役割を果たします。変数 personName の中身を入れ替えるだけで、挨拶の相手を簡単に変えることができます。
5. 変数の初期値(最初に入っている値)に注意
変数を宣言した直後、まだ何もデータを入れていないとき、その箱の中身はどうなっているでしょうか?実は、データ型によって「最初に入っている値」が決まっています。これを「初期値(しょきち)」と呼びます。
- 数値型(Integer, Longなど):
0が入っています。 - 文字列型(String):
""(空文字:長さ0の文字)が入っています。 - 日付型(Date):
0:00:00が入っています。
Sub CheckInitialValue()
Dim myNumber As Long
' 何も入れていない状態で表示してみる
MsgBox "数値の初期値は:" & myNumber
End Sub
これを実行すると「数値の初期値は:0」と表示されます。プログラミングでは、この初期値を意識せずに計算を始めると、思わぬミスにつながることがあります。必要に応じて、プログラムの最初に myNumber = 1 のように値をセットするようにしましょう。
6. 変数名の付け方のルールとマナー
変数には自由に名前を付けることができますが、いくつかルールと、プロっぽく見せるためのマナーがあります。未経験の方も、これを知っておくだけでコードがぐっと読みやすくなります。
【守らなければならないルール】
- 最初の文字は、漢字、ひらがな、または英字で始める(数字から始めてはダメ)。
- 記号(スペース、!、@、&、. など)は使えない。
- VBAですでに意味を持っている言葉(Sub, Dim, Ifなど)は使えない。
【読みやすくするためのマナー】
- 何が入っている箱か分かる名前にする(例:
aではなくitemPrice)。 - 2つの単語をくっつけるときは、2つ目の単語の頭を大文字にする(例:
userName)。これをキャメルケースと呼びます。
7. 応用編:計算結果を変数に入れて表示しよう
最後に、これまで学んだ「宣言」「型指定」「代入」をすべて使って、簡単な計算プログラムを作ってみましょう。商品の税込価格を計算するマクロです。
Sub CalculateTax()
' 変数の宣言
Dim price As Long ' 元の価格
Dim taxRate As Double ' 消費税率(小数なのでDouble型)
Dim total As Long ' 合計金額
' データの入力
price = 2000
taxRate = 0.1
' 計算して結果をtotalに入れる
total = price * (1 + taxRate)
' 結果を表示
MsgBox "商品の税込価格は " & total & " 円です。"
End Sub
実行結果は以下のようになります。
商品の税込価格は 2200 円です。
このように、複雑な計算も一度変数に保存してから表示させることで、コードが整理され、人間が読んでも理解しやすい「きれいなプログラム」になります。初心者のうちは、とにかく「まず変数を用意する」という癖をつけるのが上達の近道です。
8. 変数の宣言を強制する「Option Explicit」のススメ
実はVBAでは、宣言をしなくても変数を使えてしまう設定があります。しかし、これは非常に危険です。例えば userName という変数を宣言なしで使っていて、後で userNama(最後のeがa)と打ち間違えても、VBAは新しい別の箱だと勘違いしてエラーを出さずに動いてしまいます。その結果、原因不明のバグに悩まされることになります。
これを防ぐために、コードの窓の一番上に Option Explicit(オプション・エクスプリシット)と書きましょう。これを書くと、宣言していない変数はすべてエラーとして指摘してくれます。パソコンを触ったことがない方でも、この1行を書く習慣だけは最初から身につけておきましょう。これこそが、VBAプログラマーへの第一歩です。