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

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

初心者のExcelマクロVBA:マクロの記録では絶対に身につかないこと

f:id:drumer2sh:20150408141325j:plain

マクロの記録ではマクロマスターにはなれません。


ということは前回も書いてますが、今回はマクロの記録をしているだけでは、絶対に身につかないことについてちょっと書きます。どうしてマクロの記録では身につかないのか?それを説明するにはマクロは何ぞや?から話さないといけない。

マクロとは処理の集合体(プログラム)である


マクロというのはいくつかの処理をまとめたものを言います。これはつまりプログラムということです。この話はこのブログの最初の方とかそのあとも何回か書いていることですが、みなさんマクロマクロと言いますが、その実マクロってなんですか?って聞くと答えに大きく窮します。特にマクロの記録ばっかりしている人は・・・なぜならそれ自体が何者かわからないまま使っているだけなのですから。考えてみるとちょっと怖いですよね。何かわからないものをさもわかっているかのように使うことほど怖いものはありません。ですからはっきり言います。

マクロとはプログラムのことです。

じゃあマクロ=プログラムってなぁに?


ということになりますが、これもちゃんと説明すると、プログラムは

プログラミング言語で書かれたPCやソフトへの命令書


ということになります。つまり、PCやソフト。今回で言えばエクセルにこのように動いてほしい。こうしなさい。と言った指示をエクセルがわかる言葉(プログラミング言語)で書かれたもの。

ということになるわけです。

プログラミング言語ってなぁに?


プログラミング言語にはいろいろな種類があります。日本語、英語、フランス語、ドイツ語とかと同じ感覚です。C言語JavaPHP、PealそしてVBAといった言語の種類があるわけです。そして日本語や英語やフランス語に主語とか述語とか動詞とか名詞とか文法がありますよね?プログラミング言語言語全く同じです。プログラミング言語というカテゴリの中に、変数や関数、条件分岐や繰り返し、オブジェクトなどという文法や概念があるわけです。

そして今回のエクセルマクロはについてはすべてVBAという種類の言語で書かれているのです。

さて、簡単にまとめると

・マクロはプログラミング
・プログラミングはプログラミング言語で書かれた命令書
プログラミング言語にはいくつか種類があり、エクセルマクロはVBAという言語でできている。

ということになります。

マクロの記録では絶対に身につかないこととは?


マクロの記録をしてマクロをなんとか作ろうとしている人はこのマクロがプログラムであるという根本理解がありません。したがってマクロの記録でいったい「何が」書かれているのか?ということを深く理解できません。

確かにマクロの記録をするとエクセルの動作をVBAで翻訳した状態で記述されます。しかし記述されるのはVBAという言語のごく一部です。

おそらくですが、マクロの記録で書かれるのはほぼこれだけです。

メソッドでの実行記述
・代入式

くらいしか書かれていません。変数も、条件分岐も、繰り返しも出てきません。
つまり、英語で言えば、「Hello!」と「Yes、No」くらいしか書かれてないってことです。現在進行形も、完了形、過去完了形も何も書かれていないので、マクロの記録をするだけではそれについて理解することは永遠にできないのです。

マクロの記録ではプログラミング言語理解は身につかない。


これが言いたいことです。プログラミング言語上、大切な制御構文全般の理解やオブジェクト指向の理解、通常の変数や関数と言った理解ができない限りマクロをマスターすることは永遠にできません。


まず、マクロの記録をやめて、VBAプログラミング言語についてじっくりと勉強するようにしましょう。そうしなければマクロマスターになることなど永遠に無理なのです。


ちなみに、プログラミング言語は英語なんかよりとっても簡単です。


・相手は機械(エクセル)なので間違っても間違っても永遠に伝わるまで付き合ってくれます。
・エクセルは途中で怒って帰ったりしません。
・どう言えば(書けば)いいかはGoogle先生が丁寧にあの手この手で教えてくれます。
・間違ってたらエクセルが間違ってるよ!(エラー)と言って教えてくれます。


至れり尽くせりです。
気長にゆっくりやってみてください。


お勧めの書籍くらいはちょっとだけ載せておきます。


Excel VBA 逆引き辞典パーフェクト 2010/2007/2003対応

Excel VBA 逆引き辞典パーフェクト 2010/2007/2003対応