VBA

「ExcelVBAを実務で使い倒す技術」を初学者にオススメしたい3つの理由

ねぇもりさん、最近VBAの勉強をはじめたんだ。
何かオススメの本な~い?
もりさん
もりさん
それならこの本を読むと良いよ!
え〜むずかしそうだよ。
「実務」って書いてあるし、カバー黒いし、上級者向けな気がするよ
もりさん
もりさん
たしかに初学者向けに書かれた本ではないけど、私は初学者にこそオススメしたいと思っているよ
どういうこと?

この記事はノンプロ研アドベントカレンダー19日目です!

2018年はプログラミングをたくさん勉強した1年でした。そのなかでも特にVBA!

VBAの勉強をはじめて1年と少し、他の人よりも速いスピードで成長できたなと思っています。

そんな私の成長を支えてくれたベストパートナー「ExcelVBAを実務で使い倒す技術」を紹介したいと思います。

初学者向けに書かれた本ではないけれど、初学者にもおススメしたい!!その3つの理由をお話ししていきます!

【注意点】

この記事では「初心者」という単語ではなく、「VBAをめてぶ人」という意味で「初学者」という表現をしています。

②この記事は、本の内容をお伝えするものではありません。
この本を読んで私がどうなったか?初学者がこの本を読むとどのようなメリットがあるか?をお伝えしていきます!

理由1:読書感覚ですらすら読みやすい

プログラミングの本を開いたときに初学者が感じる「うわ、難しい…」というのは、たいていの場合、そこに書かれているコードが理解できないからだと思います。

この書籍で書かれているのは、文法などの解説ではなく、実務の現場で活かすための

  • 知識(テクニック)
  • 知恵(考え方とコツ)

です。

つまり、大部分は「日本語」で書かれているので、一般的な技術本と違って、読書感覚で読むことができると思います。(もちろん専門用語も登場しますが)

理由2:初学者の「ただ動けばいい!」は逆に疲れる

ゴルフで「とにかく飛距離を出すぞ!」と力任せにドライバーを振り回していると、すごく疲れます。

正しいフォームを身につけると、「えっ、こんなに軽い力でこんなにも飛ぶの?」と驚きます。

プログラミングの学習もまったく同じです。「とにかく動かすぞ!」と書いていると、スパゲッティコードのようにグチャグチャになって、書いている本人も、それを読む同僚も疲れます。

まず必要なのは、高度なステートメントを覚えることでもなく、大量のコードを書くことでもありません。むしろ逆。それは楽をするスキルなのです。

変数の宣言が面倒くさいと省略していたり、ただ動かすことばかり考えて正しいデバッグ方法を身につけていないと、エラーが発生したときに困ります。エラーを探すだけで疲れます。

ステップ実行・イミディエイトウィンドウ・ローカルウィンドウなどの正しいデバッグ方法を身につけていれば、省エネルギーでエラーが特定できます。

つまり、正しい知恵を身につけていれば、楽に開発ができるのです。

理由3:自己流のクセがついていない段階で王道の型を身につける

私自身が、VBAの勉強をはじめて1か月の初学者の段階でこの書籍に出会いました。

これまで、事務職として3つの会社で就業してきました。会社で使われているマクロは、勉強のためにエディタを開いてコードを見てきました。

そこで感じたのが(処理の難易度はさておき)、「自分が書くコードよりもキレイだと思えるコードがない!」です。

(自慢話かよ!と言わず、ぜひ最後までお読みくださいませ…!)

そのどれもが、エディタを開いた瞬間に「うわ…マジか」と絶句するものばかり。

ノンプログラマーが実務で書くコードって?

「会社で自分よりキレイなコードを見たことがない」とは言っても、私がたいそうキレイなコードを書いているというより、実務の現場で使われているマクロが汚すぎるのです。

具体的にはこれらです。

  • インデントがない
  • コメントがない
  • 1つのプロシージャが長すぎてひたすらスクロール
  • 同じコードが何回も登場する(Withブロック不使用・部品化していない)
  • 消費税などの数字がベタ書きされてる
  • 変数のネーミングがイケてない(a,b,cなど)
  • 変数を宣言していない、もしくは、暗黙の型

すでにこの書籍をお読みの方は「うわ…マジか」って思いますよね。

時間がたつほどに自己流のクセが染みついてしまう

ゴルフやテニスは、初学者の段階で正しいフォームを教わらずに練習し続けると、それなりに打てるようにはなるものの、「自己流」のクセ・フォームが身についてしまいますよね。

それに対して、何のクセもついていない状態で、グリップの握り方・スイングの仕方などの動作を正しく教わることで、その後の成長が速くなります。

10年間自己流のスイングをしていた人が急にスクールに通い、「正しい」フォームを教えてもらっても、その年月を経て身についたクセを矯正するのは多大なストレスと時間がかかります。

時間が経てば経つほどに、自己流のクセを修正していくのは難しく、抵抗を感じます。

プログラミングも同様に、コードを書けば書くほど、時間が経てば経つほどに、自分なりのクセがついてしまいます。

2つの例をみてみましょう。

【例1】インデントでネストの深さを揃えて美しく書こう
VBA歴1ヶ月
VBA歴1ヶ月
ふ〜ん、VBAではインデントをつけるのね
VBA歴10年
VBA歴10年
インデント?そんなことしなくてもコードは動いてるぞ
【例2】変数の宣言で暗黙の型は避けよう(型の指定をしよう)
VBA歴1ヶ月
VBA歴1ヶ月
へぇ~、VBAでは変数の型を指定するんだね
VBA歴10年
VBA歴10年
変数の型なんて書いたことないな。今さら言われてもシンドイなぁ…

これは少し大げさに書きましたが、ある分野を初めて学ぶ人ほど、新しいことを受け入れやすいです。鳥が、生まれて初めてみたものを親だと思う習性と同じです。これを「刷り込み」といいます。

「刷り込み」とは、動物の生活史のある時期に、特定の物事がごく短時間で覚え込まれ、それが長時間持続する学習現象の一種

VBAを初めて勉強する人が「インデントをしましょう」と言われたら、何の疑いもなく「VBAではそういうルールなのね。」と認識します。

そして、その後も永続的に、かつ、あたりまえのようにインデントをつけたコードを書くでしょう。

自己流のクセがついていない学習初期の段階に、王道の本から型を学ぶことで、その効果が長期に渡って持続するのです。

最後に

私自身、VBA学習初期にこの本に出会ったことで、「整理された一本道」をまっすぐと進み、最短で成長できたと確信しています。

だからこそ、私はこの本を初学者にオススメします。

この記事で「会社で見るマクロは汚い」と書きました。それに対して、私が所属しているノンプロ研メンバーの書くコードは圧倒的に美しいです。

それは、メンバーの意識の高さはもちろんのこと、ノンプロ研のVBA学習者が皆、この「ExcelVBAを実務で使い倒す技術」を読んでいるからだと思っています。

初学者にとっては、むずかしいと感じる章もあると思います。その章はいったん読み飛ばして、理解できそうな章だけを読み進めていき、何度も何度も繰り返し読みましょう。

「ExcelVBAを実務で使い倒す技術」は、一度読んで終わりではなく、定期的に読み返すことで、自分に変なクセがついていないかを確認できる良書です。

「ExcelVBAを実務で使い倒す技術」は、

自己流のクセがついていない段階で読むべし!
学習初期で正しい「型」を身につけると、その後の成長が圧倒的に速くなる!