初心者のためのExcel(エクセル)マクロVBA超入門-プログラミングの基礎1
プログラミングの基礎
長々と前回と前々回で前段をやりました。Excelマクロをマスターしたいなら、
プログラミングの基礎を学べ!ということですね。さて、まずプログラミングとはなんでしょうか?
なーんか理系っぽいですし、もはや言葉のみで拒否反応が出る人もいるかと・・・汗
しかし、近年文系出身のSEさんがたくさんいるようにプログラミングは
別に理系のものではありません。とりあえず、先入観取っ払ってください。
プログラミングとは?
プログラミングとは・・・
「コンピュータに仕事をさせるための指示(命令)を書くこと」
です。はぁ?ですね。わからなくても、大丈夫。説明します。
コンピュータはそれ単体ではまったく動くことはありません。
コンピュータが動くには「ソフト」が必要です。PS3でいうと、PS3がコンピュータそのもので、
ゲームが「ソフト」になります。「ソフト」にあたるものが「プログラム」です。
そしてこの「プログラムを作る作業」が「プログラミング」です。
要するにコンピュータというものはソフト(プログラム)がなければ何もしないし、
何もできません。電源をつけても真っ黒なままです。
え?ウィンドウズが起動するじゃないかって?
WindowsもMacもプログラムで動いている。
そうですね、起動します。起動するように「プログラミング」されているからです。
Windowsもソフトです。ですからプログラムでできています。
つまりPCの電源を入れると・・・
- Windowsを起動しなさい
- 起動が終わったら、WindowsのHome画面を表示しなさい。
- そしたら、ネットとかつなぎなさい。
- 日本語入力できるようなIME辞書を起動しなさい
- 何かされるまで待ちなさい。
※わかりやすく超おおざっぱに書いています。
というように「命令」されているからPCは動きます。
PCで動くものはほぼすべて「プログラム」が動いていて、
誰かがそれを「プログラミング」しているということです。
ありがたいですねw
プログラミングとはコンピュータへの指示書を書くこと
さて、プログラミングとはコンピュータを動かすための命令を書くことですが、
これをExcelに当てはめますと、コンピュータをExcelに置き換えて・・・
「Excelを動かすために命令を書くこと」
ということですね。これがプログラミングとはなんぞや!の答えです。
Excelマクロを理解するにはプログラミングを理解する
↓
プログラミングとはExcelを動かすための指示書を書くこと。
コンピュータはどうやって命令を理解している?
まぁここまでわかれば今回はこれでいいのですが、、ではコンピュータはどうやって
命令を理解するのでしょうか?きっと、未来なら人間の言葉をそのまま理解してくれる
ようになるかもしれませんが、(アイアンマンのジャービスみたいに・・・・)
残念ながら今は無理です。人と人が日本語や英語を使ってコミュニケーションをとるように
コンピュータと人間も「プログラミング言語」を使ってコミュニケーションをとります。
ですから、コンピュータに
- エクセルのファイル開いてー
- このシートにこんな表書いてよ!
- このグラフを折れ線でお願い。
とか言っても無理です(笑)PCは・・・・ハテ?という感じです。
でも実はおふざけでもなんでもなく、この命令を文章で書くという過程はとっても重要です。
なぜならこれをプログラミング言語に「翻訳」すればPCさん(Excelさん)は理解してくれて
動いてくれるわけですから。それに文句も言わないし、超忠実に、そう愚直なまでに忠実に、
そして超---------高速に。です。
しかし、コンピュータは人間ではないので「あいまいさ」を理解してくれません。
ですから、コンピュータに命令する時にはとってもとっても丁寧にかつ正確に命令して
あげないといけません。しかし、外国人と違って、間違ってたらちゃんと何を言ってる
かわからないよ?とか、これってこういうことじゃないの?とか教えてくれます。
ちゃんと最後まで伝わるまで(つまり伝えきるまで)なんの文句も言わず、ずーっと
あなたに付き合ってくれます。
イイヤツですね。^-^
自動販売機はどうやって動いてる?
身近な例で、自動販売機をあげてみます。
自動販売機も「プログラム」で動いています。どんな命令が入っているのでしょう?
ちょっと見てみましょう?(簡単かつ大雑把に書きます)
- お金が入ってきたか?
- 入ってない→1へ戻る、入ってきた3へ
- 入ってきたお金の種類は?
- 1円→そのまま吐き出す、5円→そのまま吐き出す、10円→お金表示を10にする。
50円→お金表示を50にする、100円→お金表示を100円にする、
500円→お金表示を500円にする、1000円→お金表示を1000円にする - 金額の合計が120円以上か?
- 120円以上→120円以下の商品ボタンを点灯、120円未満→点灯しない。
- 追加のお金が入ってきたか?
- 入ってきてない→7へ、入ってきた9へ
- 入ってきたお金の種類は?
- お金の種類によって前の金額と合計してお金表示する
- ボタンが押されたか?
- 押されてない→7へ、押された13へ
- 押された商品ボタンは?
- ボタンによって商品を出す。
- お金表示から120円を引く
- お釣りがある?
- お釣りある→お釣りを出す、お釣りがない→1へ
他にも、お釣りを出す硬貨の内訳とか、売り切れの時とか、釣銭切れの時とか、
いろいろとやっていますが、単純に「ボタンが押された商品を出す。」
という動作をするだけなのに、自動販売機に仕事をさせるには
結構な量の命令が必要だということです。
これが「プログラム」です。
さて、どうでしょう?「面倒くさい」と思いましたよね。
そうですプログラムは面倒くさいんです。作るのは結構大変です。
しかし、自動販売機は1度作ると後はずっと24時間365日停電でもない限り、
ずっと無人で動き続けます。だから、私たちは便利にいつでもジュースが買えます。
Excelマクロを作るのは結構大変!?
Excelでも同じです。マクロを作るのは正直大変です。ちゃちゃっとはできません。
慣れればできるかもですが・・・
ですが、1度作ると何度やっても同じ処理を超短時間でやってくれます。
したがって、マクロを作るには、
- この作業は毎回行うのか?
- 自動化するのにどれくらいかかるのか?
- 作業の頻度はどれくらいか?
といろんなことを考えて、作った方が断然便利!と思ったら作ればいいんです。
それ以外は作らなくていい。というか作ったらダメ。
だって、3時間かかる作業があって、でもそれは1回しかない。今後はもうしない。
この作業のマクロを開発するのに4時間かかってたら、本末転倒です。
それなら頑張って3時間かけてやった方が良い。ただ、ミスが怖いから正確にしたい。
ミスを直す時間も兼ねると5時間かかる作業ならマクロの価値が出ます。
Excelマクロを作る前には必ずこの検討をしてからにしましょう。