Excelには高度な機能が備わっており、VBAを使わなくても例えば関数やピボットテーブルなどの機能で問題が解決してしまうことも多い。
その意味で、VBAでなんでもやろうとするのは効率が悪い。
でも、ことVBAの学習においては、それらExcelの機能を知っていることがむしろ弊害になってしまうこともあるように思う。
だって、すでに機能としてあるんだったら、作る必要がなくなってしまう。
だったら別のものを作ればいいじゃないかと言われても、そういつも思いつくものではない。
わざわざVBAでやらなくたって、○○で簡単にできる。
確かにそうかもしれないが、それってVBAの適用範囲を狭めてしまう。
結果的にVBAに触れる機会が少なくなってしまい、上達の機会も減る。
別に機能を知っていても「あえて学習のためにVBAで作る」ことはできる。
でも車輪の再発明と知っていながら学習のためと割り切って作るのと「これを完成させれば自分の仕事が楽になる」と思って作るのでは全く楽しさが違う。
特に初学のうちはまだ大きなマクロを作るのは難しい。だから、完成したら仕事が楽になり、なんとか自分で作れそうだという、動機・レベルがマッチした題材はなかなか見つからない。
もし「こういうことをしたい。VBAで実現できそうだ。」と思ったら、それは絶好の学習チャンスだ。そのチャンスを逃してはいけない。
「うーん。でもVBA使わなくてもできるんじゃないか。」とか、「他の人が何か良いマクロ作ってるんじゃないか。」とか、「手でやったほうが早いんじゃないか」とか考えてしまうと、せっかくのチャンスを自ら潰してしまうことになる。
Excelの機能を調べるなという話ではないが、はじめにVBAという選択肢が思い浮かんだなら、まずは試しに作ってみると良い。