Mutable_Yunの業務改善ブログ

業務改善や生産性向上のブログです。自動化の手段として、VBAやRPAの勉強に役立つ解説をしています。

VBA 上級者から初段へ① 上級を卒業する手順

<文言、誤字修正 2019/11/02>

エクセルVBAで上級から初段にステップアップするシリーズです。今回は上級を卒業して初段になる為のステップを解説します。初段まで行けば一通り何でもできるレベルです。頑張っていきましょう。

この記事は上級です。
レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。

目次

初段へのステップ

上級者を卒業する事はこれまでの延長で可能です。特別な技術はこの段階では特に必要ではありません。中級までと異なるのは、自分だけの便利ツールを作る段階から、他人に使ってもらえるツールを作る段階に変わってきていることです。これは大きな転換です。気をつけていかないと後々困ることが出てくるからです。自分だけの便利ツールと他人が使うツールの違いを理解し、対応していくことが初段へのステップです。

初段には誰でもなれる

既に述べたとおり、コーディングの技術自体は新しい知識はほとんどありません。ここまで来た方なら誰でも上級を卒業できます。新しいオブジェクトやメソッドを覚えていくと言うよりコーディングのスタイルを変えていくことが必要です。

処理の流れにこだわる

これまで標準モジュールに記述していたコードはVBAではサブプロシージャと言います。ここに、実行する内容を順番に記述していけばOKでした。しかし、本当は標準モジュールとは全てのコードを書く場所ではありません。標準モジュールはプログラムの流れを制御すると言うのが本質です。

初段以上ではオブジェクト指向という考え方を取り入れますが、上級レベルではまずはFunctionプロシジャを使って、必要な計算を外に出す事を覚え、機能をスニペットとして分離する感覚を身に付けましょう。スニペットとは、使い回しが利くひとかたまりのプログラムのことです。この部分を大切にすることによって、初段への到達だけで無く、初段以降のステップアップの速度に利いてきます。

変数名にこだわる

これまで変数名については解説してきませんでした。VBAでは日本語含め、自由に変数名を決めることができる為です。自由に決められるからこそ、人に使ってもらうツールを開発する際には決めておくべきルールがあります。ルールに従ってコーディングすることは後々メンテナンスを担当する他人の為だけで無く、自分自身のためにもなります。理由は、パターン化することにより、変数名をどうしようか考える時間が短くできるからです。

メンテナンスのしやすさに配慮する

メンテナンスのしやすさに配慮するかどうかが中級と上級の違いで一番大きな所です。これまで解説してきた処理の流れや変数名についても、最終的にメンテナンスのしやすさに影響してきます。

処理に掛かる時間に配慮する

中級では経験と思いやりを重視してエラーと使い勝手を向上させてきました。ここでは一歩踏み込んで、処理に掛かる時間を短縮していきます。エクセルのマクロは実行中は他のエクセル作業ができなくなりますし、OutLookなどの他のアプリケーションの挙動も遅くなります。マクロの実行を極力短時間で終わらせる事を常に念頭に置くようにすると、実力が上がっていきます。

中級時代までに作成した開発が完了したツールを、より短時間で終わるように書き換える作業はよい上達方法です。ユーザーから見た挙動を変えずに、コードを修正してメンテナンス性の向上や高速化を図ることをリファクタリングと言います。

業務時間中は一度開発が完了するとなかなか、リファクタリングをしようという気にならないかもしれません。しかし、自分の実力向上のため、と思って、思い切ってリファクタリングの時間を取りましょう。

ツールを使ってくれている人のためにもなります。「自分は、もう上級者なのだ」と意識を切り替えていきましょう。

開発ドキュメントを整備する

自分だけの便利ツールでは無く、他人に使ってもらうツールやシステムを作る際に必要です。自分がいなくなっても、ツールが壊れてしまっても、どういう挙動をしているのかを示した文書があれば、最悪の場合でも、同様の機能をもつツールを新たに開発することができます。

このような配慮がある事が上級者を卒業する為に必要です。

まとめ

詰まるところ、特殊な技術が必要なのでは無く、中級自体に学んだ「思いやり」の部分を強化したのが上級者で、それを具体的に行動に移せるようになるのが上級を卒業し初段へステップアップする為に必要であると言う事が分かりました。具体的な行動についてこの記事の内容をまとめると、下記の通りです。

  • 処理の流れにこだわる。サブプロシジャはプログラムの流れをコントロールする為のもの
  • 変数名にこだわる
  • メンテナンスのしやすさに配慮する
  • 処理に掛かる時間に配慮し、高速化を念頭に置く
  • リファクタリングは自分の為にもなるし、他人の為にもなる
  • 開発ドキュメントを整備する

これらの項目について次回以降、詳しく解説していきます。有段者の仲間入りを果たすために、頑張っていきましょう。