初心者を脱するために必要な知識とテクニックがつまった「ExcelVBAを実務で使い倒す技術」を読んでみた

オンラインサロン「ギガ盛りブログ飯」経由で、秀和システムさんから『ExcelVBAを実務で使い倒す技術』を献本していただきました。僕はVBAを実務で使う機会はないんですが、たまに使っているので基礎知識ありの初心者目線で書評をしたためました。

そもそもVBAって何でしょう

まず最初にVBAについて軽く説明しておきます。本の内容には関係ないので、もう知ってるよって人は読み飛ばしちゃってくださいな。

正式名称はVisual Basic for Applicationsで、ExcelやAccessなどで使えます。Officeさえインストールされていれば使える手軽さと、定型業務の自動化や目的に応じて入力フォームを埋め込んだりできる便利なやつです。ExcelVBAの設定からソースコードの管理まで業務で使うなら知っておくと良い技術が紹介されてます。

快適にコードを書くためには

僕は実際に使ってみて、設定画面とにらめっこしながら使いやすくなるように弄りました。ああでもないこうでもないってやっていたら結構時間かかるんですよ。なんでそんなに時間をかけるのって思いますよね?

理由は簡単で、その後の作業効率に圧倒的な差が生じるから。自動構文チェックの無効化とか変数の宣言を強制するとか、僕がやっていた設定がほとんど載っていて、もっと早く知りたかった。切実に。

バグやエラーに浪費する時間は無駄

プログラムのバグはVBAだけでなく、いかなる言語においても発生するもの。エラーやバグに直面した時、考えてどうにかしようと頑張るのは初心者にありがちななことです。わからないものは考えてもわかりません。はっきり言って無意味です。

本書で提案されているのは、まずエラー文を読んで落とし込む。デバックして解決しなければGoogle先生に聞いてみる。まさにこの通り。先人たちの経験と知恵に頼ってみましょう。案外すんなり解決するものです。

あの時知っていたら

読み進めると「あぁ、これやらかしたことある」ってやつがちらほらと。あまり使ってない僕でも目から鱗なトピックがあったので、実務でバリバリ使っている人ならもっと多くの気付きが得られると思います。

今まで最善だと思っていたことが実はそうでもなくて、もっといいものが出てきた時の衝撃と言ったらもう言葉にできません。冒頭からそんな体験をしたので、1つだけコードを引用して紹介しますね。

短いコード

Sub セルの値を出力()
Debug.Print ThisWorkBook.Worksheets(1).Cells(1, 1).Value
End Sub

セルの値を出力するSubプロシージャです。処理内容は1行で書かれています。この程度の長さなら可読性を損なうことはないので、僕は今までこんな感じで書いてました。できるだけ無駄を省いて短くする(同じ処理内容なら短い方がいい)という考え方が染み付いていると、自然とこうなってしまうのです。

ちょっと長いけど早く打てるコード

Sub セルの値を出力()
Dim mySheet As Worksheet
Set mySheet = ThisWorkbook.Worksheets(1)
Debug.Print mySheet.Range(“A1”).Value
End Sub

こちらのSubプロシージャはどうでしょう。やっていることは全く同じですが、3行に増えています。一見さっきのコードの方がスマートなようですが、入力スピードはこちらの方が幾分も早いです。なぜでしょうか。

ポイントとなるのは「自動メンバー表示」です。オブジェクトに続いてピリオドを入力すると、メンバー候補が表示されます。いわゆる補完機能ですね。短いコードではWorksheets(1)以降になるとメンバー候補が表示されませんが、少し長いコードでは3行全てメンバー候補が表示されます。入力する手間が省けるし、ミスも少ないというわけです。

後半はそこそこ高度な話

ファイルサイズが肥大化したらデータベースを活用しようとか、実行時間を早くするための工夫とか。中級者向けの内容になっているので、結構しっかり業務でVBAを使っている人には響く内容だと思います。僕はVBAで大規模なプログラムを組んだことがないので、そうなのか~ふむふむって感じで勉強になりました。

まとめ:超初心者向けの本ではない

専門用語を知らなくてコードを書いたことがないなら、本書のターゲットではありません。書名の通りなんですけど、実務でVBAを使っていて、もっと使い倒したい人に向けて書かれた本です。基礎を理解していてステップアップしたいならおすすめです。

著者は実際に体験したことを基に書いていると思います。つまずきやすい部分やよくあるシチュエーションを具体例に解説されているので、すぐ役に立つことから今後使えそうなテクニックまで幅広く習得できます。

プログラミングは面倒くさがり屋の方が伸びると思っていて、要するにいかに楽をするかが重要です。例えば同じ処理を10回やるとして、正直に10行書くよりも繰り返し処理を調べて3行で書く方が賢いと思いませんか。初歩的な例だけど、発展すれば目的と相性がいい言語やライブラリを選んで実装するなんてこともできます。

最後少し脱線しましたが、Excelの処理を自動化したいならVBAが便利だよというお話。実務で使うことを前提にカバーしているので、使いそうな部分だけ学べます。カラーで図やコードが見やすく、休日にサクッと読めるボリュームでした。

秀和システム ExcelVBAを実務で使い倒す技術