初心者のためのExcelマクロ超入門(絶対できるVBA開発)

マクロがまったくわからない人のためにエクセルマクロやVBAについてできるだけわかりやすく書いています。Twitter:@shuhhohhey

初心者のためのExcel エクセルマクロVBA入門-変数を宣言する

変数は作る。絶対に・・・


今日は前回の変数は絶対に宣言してね。についてです。実は通常ですと変数は宣言しなくても使えます。
エクセルマクロの初期設定では変数は宣言しなくても使えるようになっていますが、マクロというかプログラミングをマスターしたいのなら、変数は絶対に宣言してください。エクセルで変数の宣言を強制する方法があります。まずマクロを作成する際には必ずこの設定をしてから作るようにしましょう。

VBEを起動して[ツール]-[オプション]を実行します。VBEはVisual Basic Editorですね。Alt+F11でも起動します。そのメニューから[オプション]ダイアログボックスの[編集]タブで、[変数の宣言を強制する]チェックボックスをオンにしてください。

f:id:drumer2sh:20131118112207p:plain

こうすると、コードウィンドウの最初に

Option Explicit


と自動的に必ず書かれるようになります。これが変数の宣言を強制する一文です。

こうすると、変数を宣言しないで使っている場合に・・・

変数が定義されていません。


というエラーが出て、マクロが実行できません。プログラミングは言語です。機械とのコミュニケーションです。ですから、機械もちゃんと理解できないことがあると、「わからないよ!」とか「この文章変じゃない?」と教えてくれるのです。人間同士のコミュニケーションでも一番怖いのは・・・

言い方を間違えて誤解されること


ですよね?例えば、

「そうね、所詮いつでもできる死。」

よくある誤変換ですが、もらった方はちょっといい気分しませんし、人によっては誤解されます。
プログラミング言語に置き換えると、相手はエクセルさんですから、別に気分を悪くしたりはしませんが、誤解したらしたままです。ですので誤解したまま命令は実行され、、、思ってたのと違う結果が出てしまうわけです。

そうなると、どこで誤解したのか?ということを人間側が血眼になって探す必要があります。これが300行くらい書いた命令書(プログラム)だったらどうでしょうか?すごく手間と時間がかかって大変です。
人同士でも誤解を解くのは大変ですw

そして、このエクセルが誤解を招く一番の原因が・・・実は、

タイプミス


なんです。例えば、NumberをNomberと書いてしまったり、HensuをHansuと書いてしまったり。。。。
そんな誤解を未然を防いでくれるのが、先ほどの変数を強制する設定なわけです。

実は面倒くさいと思ってない?


でも初心者というか、マクロを始めた人はとかく変数という便利な箱を結構「乱用」します。特に宣言もせずに利用できてしまうというVBA特性のせいか、簡単にマクロを組みながら変数を作ってしまうんですね。さらに言うと、エクセルマクロの解説サイトですら、「とりあえず宣言はいいや」となっていることも多いです。理由は解説が面倒くさいから、初心者の人も宣言?えぇ、なんか宣言すると逆にエラーになったりするからわかりにくいし・・・面倒くさい。となっていることが多いです。
しかし、

マクロマスターへの道は変数の宣言にあり


と言っても過言ではありません。なぜなら体系的に整理してマクロを書くには変数の管理は絶対だからです。初心者でなんかエラーになるから・・・というのは変数の「型」で躓いていることがほとんどです。変数には型というものがあります。箱に入れる種類によって箱の形を変えるイメージです。旅行に行くだけなのに服をギターケースに入れて持っていく人はいません。それと同じことです。マクロマスターであれば、変数の型には気を配っていて、型がないと非常に気持ちが悪く感じます。

初心者が変数宣言が面倒くさくなる理由として・・・Office TANAKAという有名なサイトでも書かれていまが、

(1)変数の型を指定して宣言してみた
      ↓
(2)なんか知らんがエラーになった
      ↓
(3)型の指定とか訳わかんないし
      ↓
(4)じゃ、いっそ変数は宣言しないってことでおk?(←今ここ)

引用元:http://officetanaka.net/Excel/vba/variable/02.htm

しかし、型がわからなくても変数の宣言はできます。前回も言いましたね。

人もエクセルも両方が理解できるように書くこと!


でした。この人を「自分」ではなくて「みんな」で置き換えましょう。つまり誰が見てもわかる(伝わる)ように書くことが大切なのです。その意味で変数の宣言というは非常に重要なのです。

いきなり、突拍子もなく変数が出てくるよりも、最初にこれとこれとを変数として使うよー。と書いてある方が分かりやすいですよね?理由はシンプルです。

Dimステートメント


前置きが長くなった・・・いつも通りです。(笑)さっそく変数を宣言します。

Dim hensu As

これだけです。変数を宣言する。つまり変数を作るにはDimステートメントを使ってその後に作りたい変数の名前を書くだけです。また型がわからない場合は省略して

Dim hensu


だけでもいいです。こうすることでいわゆる「何でも型」オールマイティみたいな型になります。この型を「Variant」と言います。明示的にわからない場合に

Dim hensu As Variant

と書いてもいいです。というか、書いてください。その方がいいです。また、カンマで区切って複数の変数を宣言することもできます。

Dim hensu As Long, hoge As Long

注意しないといけないのが

Dim hensu, hoge, fuga As Long

と書いても、すべてLongにはならないということです。この場合だとfugaがLongで後はVariant型になります。
次回は変数が使える範囲についてです。変数には使える範囲が決まっています。それは実は変数を宣言した場所によって異なるのです。


今日はここまで!

かしこ