ツールを作ること自体が目的になってしまい、現場で使われないまま終わった。
そんな経験はありませんか?
この回では、VBAで業務ツールを作る前後に確かめたい4つのことと、データ型の選び方で失敗した話を紹介します。
業務ツールを作る機会がある方は、ぜひ読んで下さい!
本当に必要なツールだけを作る
これからVBAツールを作る方に、気をつけてほしい点があります。
それは、「本当に必要なツールだけを作るべき」ということです。
いくらVBAで便利なツールを作っても、業務に使えなければ意味がありません。
たとえば、あなたが経理担当で、経費処理のVBAツールがほしいと思っているとします。
営業部のVBAが得意な社員が、次々とツールを作ってくれるのに、経費処理のツールだけがなかったら、どう感じますか?
「せっかく作ってくれたけれど、使う必要がないわ」となってしまいます。
自宅で趣味や勉強として作るのは自由ですが、会社の業務時間中に作るなら、仕事に関係するツールにすべきです。
1. 作る前に、ヒアリングする
業務用のツールを作る前に、まず利用者にヒアリングしてみましょう。
できれば実務に詳しい方に、「本当にそのツールを作る必要があるか」を判定してもらいます。
必要ないという結論になったら、別のツールの開発を考えましょう。
ヒアリングなしで作ると、時間のムダになりかねません。
VBAに詳しくない方は、完成形をイメージできません。
そこで、試作版を見てもらうのも一案です。
2割くらい完成したら、一度、使う予定の方に操作してもらいましょう。
パソコンは使えるものの、プログラミングには苦手意識がある、という方もいます。
質問されたら、丁寧に答えてあげて下さい。
その場で答えにくい場合や、コードを確認する必要がある場合は、後日の回答でも構いません。
2. 完成したら、検証期間を設ける
念願のツールが完成すると、すぐに使いたくなる気持ちは、よく分かります。
ただ、すぐにVBAへ移行してはいけません。
本番に切り替える前に、検証の期間を取りましょう。
従来のやり方とVBAツールの両方を実行してみて、問題がなければ切り替えます。
3. 仕様が変わったら、必ずチェックして直す
仕様変更などで、Excelのフォーマットが変わることは、よくあります。
フォーマットが変わったら、新しい形式でツールを動かし、問題なく動くかを必ず確認してください。
作業シートの列が変わった場合は、VBAのコードを直す必要が出るケースがほとんどです。
VBAの仕様上、セルや行・列が1つでも変わると、改修が必要です。
仕様が変わったら、必ず動作確認をして、問題なく処理できるか確認するクセをつけて下さい。
4. 作って終わりにしない
ChatGPTで作ったVBAツールが問題なく動いたとき、あなたならどうしますか?
「ちゃんと動いているから、このままでいいか」と思うかもしれません。
でも、ツールを作って終わりにせず、常に改善を重ねてほしいと思っています。
- この処理を変えれば、もっと早く終わるかも
- 入力ミスがあったとき、エラーメッセージが出るようにしておこう
- 実務の担当者に使ってもらい、意見を聞いて改善しよう
同じ作業を複数人でやっているなら、作業をしている全員にヒアリングするのがおすすめです。
ツールの不具合やエラーの報告を受けたら、放置せず、しっかり見直しましょう。
私は、あるツールをExcelVBAで作ってもらったことがありますが、きちんとした指示書がなかったため、処理が止まっても何も表示されない仕様になってしまいました。
ツールのせいではなく、指示が不十分だった私の責任ですが……。
たとえば、ファイルを読み込む処理なら、ファイル名の一部をキーにして、違うファイルを読み込もうとしたときは、エラーメッセージを出して処理を止めるようにしておく必要があります。
せっかくVBAに興味を持ったのですから、とことん突き詰めていきましょう。
おまけ:データ型で失敗した話
VBAには、多くのデータ型があります。
データ型では、変数が扱える値の種類や大きさを指定できます。
ChatGPTに、「ExcelVBAのデータ型を表にまとめてください。見出しは『タイトル』『使用メモリ』『値の範囲』でお願いします」
と頼んで、一覧にしてもらいました。
なお、Variant型は、どんな種類のデータも格納できる汎用的な型ですが、メモリ使用量が大きくなるので、必要な場合だけ使うのがおすすめです。
実務でよく使うのは、Long、String、Booleanあたりです。
オーバーフローの失敗談
あるVBAツールを運用していたとき、データの行数をInteger型で扱っていたことがありました。
ところが、データ量が増えたため、実行時にオーバーフローが発生してしまいました。
オーバーフローとは、データ型で扱える数値の範囲を超えてしまうことを指します。
Integer型が扱える整数は、-32,768から32,767までです。
今回は、データ量がそれを超えたため、オーバーフローになりました。
直し方はシンプルで、Integer型をLong型に変えるだけです。
プロシージャ内の「Dim 変数名 As Integer」を、「Dim 変数名 As Long」に書き換えます。
「それなら最初からLong型にすればいいのでは?」
と思うかもしれません。
理由は、使用メモリです。
Integer型は2バイト、Long型は4バイトです。
使うメモリが増えるほどVBAファイルが重くなり、重すぎると途中で強制終了することもあります。
できるだけ軽く保っておく必要があるのです。
変数の役割をよく考え、ふさわしいデータ型を選んでください。
値の範囲が整数のとき、Byte型・Integer型・Long型のどれを使うかは、慎重に決めましょう。