VBA でプログラミングできるようになるには?

よく見かける質問に
「どうやって VBA を覚えましたか?」
「どうすれば VBA ができるようになりますか?」
VBA を覚えるのに良い本を紹介してください。」
VBA は独学でできるようになりますか?」
というのがあります。
ちゃんとは数えていませんが、1年に10回以上は見かけるような気がします。
この問いに対する私の考えは以下のとおりです。
(Excel を普段利用しているエンドユーザーが自身のためにこれから VBA を覚えようとする場合の話です。職業プログラマは全然別。)
 
ある程度のサイズの VBA のプログラムを書けるようになるには、"プログラム開発共通のこと"と"VBA 固有のこと"の2種類のことを身に付けておく必要があります。
ただし、全てを身に付けるまでまったく手を動かさないというのも間違っていると思います。
やりながら、徐々に身に付けていけばいいのです。
 
"VBA 固有のこと"は難易度を間違えなければ、独学で行けるというのが私の考えです。
自動記録したものや他人の書いたコード(ネットにあるものとか職場にあるものとか)を参考にヘルプ(まずはカーソルあてて F1 キー)でいろいろ調べてそれらを理解していくことと、自分でコードを書いてあれこれ試行錯誤することを繰り返せばかなり力はつくと思います。
なまじ、そこらの本を読みふけるよりもずっと効果的です。読んだだけってのは、そのときは分かったような気になりますが、忘れたりいざという時に使えなかったりしますから。
(他にも本に頼る人の弊害として、ちょっと本に書いてあることと違う状況や書かれていないことだと、もう自分ではできないという応用力のない受身の人がたまにいます。まぁ、これは人に拠るのでしょうが。)
だから、私は基本的に本のおすすめはしません。
なお、難易度の判断は簡単です。
どーにもこーにも取っ掛かりが見つからない、
1時間あれこれ試行しても思い通りにいかない、
教えてもらってもよく分からない 場合は、自分にとって難易度が高いと判断して、当面はあきらめてしまえばいいのです。
VBA のコードを書くことが目的ではなく、業務・作業の効率化が目的なら、無理して頑張ることはないのですから。

"プログラム開発共通のこと"は、システム開発の仕事をしている人やその教育を受けた人を別にすれば、プログラミング初心者にはなかなか難しいんじゃないかと思います。
個人的には、エンドユーザープログラマなら、
・要件定義→設計→コーディングの手順で作業が発生すること
・プログラムの構造化
・モジュール結合度やモジュール強度を意識したプログラムの分割
・論理演算(ド・モルガンの法則)
オブジェクト指向のさわり
ぐらいを知っておけばいいんじゃないかなって気がします。
これらは難しいというか、そういうものがあるんだということにすら気づかないような気がします。
さて、どうやって勉強しましょうかね?
自動記録を卒業するあたりから、誰かに教えてもらうのがベストのような気がします。本で勉強してもいいかもしれませんが、なかなか適当な本(VBA しか知らない初心者向けでサンプルコードがあるもの)を探すのは難しいと思います。
まぁ、何も知らなくてもそれなりに経験を積むことで分かってくるかもしれませんが、非効率なのでおすすめはできませんね。
 
※.Excel World の 2007年1月9日 18:02 の日記をコピーしています。
http://excel.sns.fc2.com/excel/