脱入門者の
Excel
VBA 自力でプログラミングする極意を学ぶ
立山秀利(たてやま ひでとし)
講談社 BLUE
BACKS
2016年3月20日第1刷
氏のシリーズもので「入門者のExcel VBA」を読んだ後に手にする本。「入門者の~」が、Excel VBAが全く初めてという人が対象だったのに対し、本書はその後のステップアップのために書かれたもの。
VBAを使えるようになって、いろいろやってみたいと思っている人、また、いろいろやってみたけどなかなか上手にプログラムが組めないと思っている人に最適。よくありがちな、「VBAを使うと仕事がこんなに楽になりますよ」といったたぐいの本ではない。
氏の入門シリーズ同様に例となるプログラムを組み上げることから始まる。入門書にありがちなこととして、例となるシステムに必然性とか親近性がないと、なかなか先に進めないということがある。本書では、複数の県の複数の営業所で扱った、一日の売り上げデータが集められたCSVファイルを、それぞれの営業所ごとに分けるというプログラムを作る。まずはこの作業を必然性のあるものとして関心を持つことができるかどうかが分かれ道になる。
この作業をプログラム化するために、複数のファイル(Excelでいうブック)を開いて、ブック間、そして、ブック内のシート間のデータのやり取りという作業が発生するので、「入門者の~」より一段レベルが上がる。ここはややハードルの高いところであろう。しかし複数のファイル(ブック)間のデータの交換は十分あり得る作業であると思う。
この段階でFor~Next文やIF~Thenについても学ぶし、プログラムを一気に組み上げるのではなく、少しづつテストし、理解しながら組み立てていく手法も学ぶ。これは大きなプログラムを作り上げる上では重要なステップである。ここまでで本書のほぼ半分近くを使っているので、ここが脱入門者の一つのキーポイントとなるところだ。
続いて脱入門者の重要な要素としてデバッグが取り上げられる。プログラムを作り上げる段階では、必ずうまくいかない部分が出てくる。一旦そこにはまり込むと抜け出せなくなることもままある。そうならないために、少しずつステップを踏んでテストを繰り返しながら組み上げることが重要だが、実際にエラーが出たり、思うような動作をしない場合は、デバッグが大事なツールになる。本書では出来上がったプログラムにわざとエラーを作って説明をしているので、結果が分かった状態でのデバッグになり、あまり現実感がないかもしれない。しかし、デバッグのための誤りを含んだプログラムを用意するのも、それはそれで難しいところがあるので、これは致し方ないかもしれない。
後半はエラーに対する処理が取り上げられるが、自分で作って自分で使う分には問題なくても、他の人はどのように使うか分からない。想定もしない使い方でエラーが出ることは、VBAを実際に現場で動かす場合にはいくらでもあり得ることである。エラーの処理方法は、実用的なプログラムのためには重要なポイントとなる。
他には処理を速くする方法、後で変更を容易にするプログラムの書き方について書かれている。
処理を速くする方法とプログラムを分かりやすくする方法とは、どちらを取るか考えどころである。トリッキーな処理でプログラムを速くするよりは、より分かりやすい方が、後々の変更や、他の人が見ても変更が容易になることを考えると、良いように思う。処理スピードについてはもっと高度なレベルでの問題ではないだろうか。
ただ、本書にも書かれているが、この程度のプログラムでは、スピードアップするように変更したとしても、体感できるほどではない。スピードアップ手法が重要な問題にならないほど今のPCは高性能になっているということで、氏もそれは十分承知した上で、プログラムの書き方として提言していることだと考えられる。
紙面の都合でプログラムの記載の一部を省略したところが多いので、自分で実際にプログラムを作りながら読むのがいいだろう。単に読むのではなく、本書に従ってプログラムを動かしながら読んでいくとより身に着く。そのためのダウンロードサイトも用意されている。
出版から年数が経っているので、Excelのバージョンが変わっていて、もしかすると細かいところでの相違は出てきているのかもしれないが、根本的な問題にはならないと思う。
冒頭に書いたように、例題を現実のものとして捉えられるかどうかということはあるにしろ、入門からステップアップするために必要なポイントをきちんと押さえており、脱入門には最適な一冊だと思う。