世の中には便利なWebサービス、ソフトウェアがたくさんありますが、「Excel大活躍!!」な現場もまだまだあります。
それはシステム導入のコストがネックになっていたり、システムを使う方のITスキル的に「Excelを使ったほうがいい」という選択になることもあるからです。
とは言え、素のExcelシート・Excel関数だけでは限界があり、複雑な集計処理などはVBAで作り込む必要が出てきます。
今回、秀和システム様より「ExcelVBAを実務で使い倒す技術」という本を献本いただきましたので、VBAを実務で使う極意を学んでみました!
目次
「このVBA、コピペで作ったけどなんとか動いてる」に心当たりがあればぜひ読んでほしい
実は以前、VB.NETの開発者でした。よっひー(@yosiakatsuki)です。
今回頂いた「ExcelVBAを実務で使い倒す技術」ですが、残念ながら「Excel VBA 入門者」向けの本ではありません。
この点、間違えるとせっかくやる気を出して本を買っても「期待していた内容と違う」となりかねないので冒頭で申し上げておきますね。
本書の内容はある程度VBAを使ったシステム…というかExcelブックを作ったことのある人に向けて書かれていると思います。
よくあるプログラミング入門書にあるような「変数とは」とか「IF文の書き方」などの説明がある訳ではなく、「この本を買えばVBAが書けるようになる!」と言うものではありません。
その代わり、ある程度VBAでプログラムを書いたことのある人(もしくはこれから本気でVBAを始めようとする人)が、より効率的に、より保守性の高いVBAを書くためにはどうすればよいかという点で参考になる内容が盛り込まれています。
「このVBA、なんとか動いてるけど、ほとんどWebサイトのコードのコピペとマクロの記録で成り立ってる」
…なんてことに心当たりがあるならぜひ一読頂きたい本です。
序盤はVBA開発を効率化する準備について
本書の序盤の方では、VBAのコードを書くためのエディタ画面である「VBE」の設定について書かれています。
- シンタックスハイライトの設定
- 覚えておきたいショートカットキー
などなど、効率よくガンガン開発するためにはこういった環境面の準備ってかなり大事です。
僕は以前VB.NETのエンジニアをやっていて、Visual Studioという非常に便利なIDE(統合開発環境)を使っていたので、「まずは環境から!」みたいな感覚はすごくうなずけました!
その他、VBEでは「自動メンバー表示」といって、次に続くコードの予測変換のような機能があるのですが、書き方によってはその「自動メンバー表示」が効かなくなるんですね。
僕はこの点知らなかったので「なんでこれは候補が出ないんだ!!」ってイライラしながら書いてたことを思い出しましたw
そんな知っているか知らないかで効率が違うというあれこれについて勉強になった部分でした
実際に開発を進める上で遭遇するバグにどう対処するか
続いては、開発をすすめる上で遭遇するエラーの説明や対処方法、
効率よくデバッグ作業を行うための「ステップ実行」や「ブレークポイント」の使い方について書かれています。
特にこのデバッグ作業が上手いかどうかは開発効率に直結します。
エラーや期待と違った結果に対して「どこに原因があるかさっぱりわからない」状態だと時間を浪費するばかりでいつまでたっても完成に近づけないわけです。
- ステップ実行で途中の変数にどういう値が入っているかを確認する
- ブレークポイントを置き、ある地点で期待した結果が得られているか確認する
こういった作業の繰り返しでプログラムが次第に完成に近づきます。
プログラムの途中でメッセージボックスを表示させて処理中の変数の値を確認しながらデバッグしていたという方はかなり幸せになれる内容が載っていると思います。
システムの設計、実際のコーディングのヒントなども学べる
中盤は設計や実際にコーディングをする際のヒントになるようなことが書かれています。
設計部分で「そうだなぁ」と思った部分は「書けばプログラムで出来るからやる」ではなく、時にはプログラムに頼らず、運用でカバーすることも大事という部分でした。
僕も以前まさにそんなことを思ったことがありまして…
「それ、プログラムでガチガチに書いたら少しでもズレたデータ入ってきたらどうするのよ!」みたいなことを言った記憶があります。
結局その時は集計前の入力用シートを作って対応したのですが、本書でも「人に優しい形式」と「PCに優しい形式」と言った内容で似たようなことが書かれていたので、「やっぱ同じような経験ってするんだな」とちょっと安心しました。
コーディングについてはネットでの情報を調べるポイントや、読みやすく再利用性を高める「リーダブルコード」の書き方についても触れられています。
変化に強く、可用性の高いシステムを作るヒント
終盤では変化に強いシステムのい作り方について書かれています。
システムは「作ったらそれで終わり!」というわけではなく、使う人・会社の状況に合わせて変化が必要になることが多いです。
そういった「改修」が必要になった場合でも修正しやすいコードを書くために「同じ記述を書かない」ことや「定数」についてはぜひ知っておきたいことだと思います。
特にExcel VBAでは列の指定をアルファベットではなく、列番号で指定する部分が出てくるので、「列挙型」については知っておくとめっちゃ便利だと思います!
VB.NETを書いていた時は「列挙型」は結構使っていたのですが、VBAでも使えるとは知らなかったので「いいこと聞いた!」ってなりました!
これがあると「あれ?この列…左から何番目だっけ??」なんてことを毎回考える必要がなくなるので便利ですよ!
その他、画面の描画や、自動計算を止めるといったVBAのパフォーマンスを高めるために絶対知っておきたいこともぜひ参考にしていただきたいです!
まとめ
冒頭で話した通り、本書は「VBAの入門者」ではなく「多少Excel VBAでシステムを作ったことがある人」「VBAを本気出して書いていこうという人」にバッチリハマる本だと思います。
- コピペとマクロの記録をフル活用、とりあえず動くVBAを書いている…
- 何か改修が必要になると、修正すべきポイントを探すのに時間がかかる…
そんな状況を脱して、より変化に柔軟に対応しながら業務効率化を目指したいならぜひお手に取ってみてはいかがでしょうか!
さいごに
途中、バージョン管理をGitでやろう!的なことが書いてあったのですが、
せっかくならExcelファイルをドーンと管理するのではなく、ソースコード単位で管理できるとチーム開発が捗りそうですね。
(いちいちモジュールファイルをエクスポートするのがめんどくさそうですけど…いい方法ありますかね?)
追記:あるらしいです▼
@yosiakatsuki 書評いただきましてありがとうございました!
Gitですがvbacというツールが便利です(本書の内容に入れ込みきれなかったのですが…)https://t.co/pdtOxxyev8— タカハシノリアキVBA本発売中! (@ntakahashi0505) 2017年5月1日
ではまた。