ツールを作ること自体が目的になってしまい、現場で使われないまま終わった。

そんな経験はありませんか?

この回では、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型のどれを使うかは、慎重に決めましょう。