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プログラマーへの第一歩です。
まとめ
変数の基本をしっかり理解しよう
今回は、Excel VBAにおける変数の基本について、宣言・データ型・初期値・命名ルールまで幅広く解説しました。変数は「データを一時的に保存する箱」であり、プログラムの中で何度も使い回すことで、コードの可読性や保守性を大きく向上させる重要な要素です。特にVBA初心者にとっては、「なぜわざわざ変数を使うのか」という疑問を持つことも多いですが、実際の業務でのExcel自動化やマクロ作成では、変数なしでは効率的な処理はほぼ不可能です。
変数を使う第一歩は「宣言」です。Dimステートメントを使い、どのような名前の変数を使うのかを明確にすることで、VBAがその変数を正しく認識できるようになります。また、As IntegerやAs Stringなどのデータ型を指定することで、扱うデータの種類を限定し、エラーの発生を未然に防ぐことができます。これは、プログラムの品質を高めるうえで非常に重要な考え方です。
データ型と初期値の理解がミスを防ぐ
VBAでは、Integer・Long・String・Double・Dateといったさまざまなデータ型が存在し、それぞれ適した用途があります。例えば、金額計算にはLongやDoubleを使い、名前やメッセージにはStringを使うことで、意図した通りの処理が実現できます。また、変数には初期値が存在することも重要なポイントです。数値型は0、文字列型は空文字が初期値として設定されるため、これを知らずに計算や表示を行うと、思わぬ結果になることがあります。
可読性を高める変数名とOption Explicitの重要性
変数名の付け方も非常に重要です。意味のある名前を付けることで、後からコードを見返したときの理解しやすさが大きく変わります。例えば、priceやuserNameといった名前は、その変数の役割が一目で分かるためおすすめです。また、Option Explicitを使用することで、宣言していない変数の使用を防ぎ、タイプミスによるバグを未然に防ぐことができます。これは、実務レベルのVBA開発では必須のテクニックです。
サンプルプログラムで理解を深める
以下に、変数の宣言・代入・計算・表示までを一通り行うサンプルコードを紹介します。基本をしっかり復習しながら、自分で書いて動かしてみることで理解がより深まります。
Sub SampleVariableSummary()
' 変数の宣言
Dim userName As String
Dim price As Long
Dim taxRate As Double
Dim totalPrice As Long
' 初期値の設定
userName = "山田さん"
price = 3000
taxRate = 0.1
' 計算処理
totalPrice = price * (1 + taxRate)
' 結果表示
MsgBox userName & "の支払金額は " & totalPrice & " 円です。"
End Sub
実行結果は以下のようになります。
山田さんの支払金額は 3300 円です。
このように、変数を使うことでデータの管理がしやすくなり、コードの再利用性も向上します。Excel VBAでの業務効率化や自動化を目指すなら、変数の理解は避けて通れません。今回学んだ内容をベースに、さらに応用的なマクロ作成へとステップアップしていきましょう。
生徒
「変数って最初は難しそうだと思っていましたが、箱みたいなものと考えると分かりやすいですね。」
先生
「その通りです。変数はプログラミングの基本中の基本なので、ここをしっかり理解しておくと、今後の学習がとてもスムーズになりますよ。」
生徒
「Dimで宣言して、型を指定してから使う流れも理解できました。特にStringとIntegerの違いが大事ですね。」
先生
「そうですね。データ型を正しく使い分けることで、エラーを防ぐことができますし、処理の精度も上がります。」
生徒
「あと、Option Explicitは必ず書いたほうがいい理由もよく分かりました。ミスを減らせるのは大きいですね。」
先生
「はい、それがプロの書き方です。最初から良い習慣を身につけておくことが大切ですよ。」
生徒
「これからは変数を意識してコードを書いてみます!」
先生
「ぜひ実際に手を動かして試してみてください。理解がどんどん深まりますよ。」