サラリーマンの投資と仕事研究所

サラリーマンのビジネス手法研究とその実践記録

VBAに精通している人がいない職場では式そのものをVBAで入れると良いというお話

どうもこんにちは。VBA使ってますか?
今回は他人に分かる資料を残すという視点です。VBAやマクロは非常に便利ですが、一部を除いて過程を振り返るのにVBAのプログラムを読み解く必要があります。

そのためVBAを読み解けない人が多い職場ではVBAを使いづらいというケースをよく耳にします。後からVBAが書けない/読めない人がファイルを扱う場合には過程を残すために式そのものをファイルに書き込むやり方が良いのではないかという提案です。

VBAが読めない人は結果だけではファイルの加工方法がわからない

VBAはWorksheetFunctionを使って、エクセルの関数と同様の動きを行うことができます。
例としては以下です。
(状況)
A1:1
A2:2
A3:3

Cells(4,"A").value=Appllication.WorksheetFunction.Sum(Range("A1:A3"))

しかしWorksheetFunctionを使用すると答えがセルに値/文字列で入ります。
このケースでは6が入ります。しかし6という答えが残るのみで後から見た人はVBAのプログラムでしかどのように数値が取り扱われたのかがわかりません。
そのためWorksheetFunctionはVBAを読める人がいない状態で使うと後からさかのぼって数値の成り立ちを調べることができないという事態に直面するのです。

ワークシート関数そのものをエクセルに入力する

そこで私が使っているのはVBAでFORMULAを使って、式そのものを入力する方法です。

Cells(4,"A").Formula="Sum(Range("A1:A3"))"

この方法で入力することによって、A4にはSum(Range("A1:A3"))が入力されるため後から式が確認できるという方法です。

式入力マクロのデメリット

複数セルを対象にするのが難しい場合が多いので、コピー&ペーストなどの処理を追加して複数セルに対応していく必要があります。

まとめ

VBAが読めない人が多い職場では、WorksheetFunctionを使わずにExcel関数の式そのものをVBAで入れることによって可読性を上げるほうがよいのではないか。
式は複数セルに対応させるのは難しいので、複数処理対応をあら何追加する必要があります。