「VA公用文」を利用しているユーザーの方から、次のようなご要望をいただいたことがありました。
「自分は見出しのマークダウン記号に『#』ではなく『.』を用いています。VA公用文がバージョンアップするたびに、VBEで定数を設定し直しているのですが、マークダウン記号をオプションで設定できるようにできないでしょうか?」
確かに現在の「VA公用文」で文書のセットアップ時に選択できるオプション項目は、限定的です。ご要望があったような設定も追加すべきなのかどうか、ずっと悩んできました。最近になって、ようやく考えがまとまった気がするので、スタイルに加えておきたいと思います。

オプション機能の2つの役割
WordやExcelのVBAアプリケーションにおいて、オプション機能は次の2つの役割を持つと考えられます。
1. 静的設定(基本環境の調整)
- アプリケーションの基本的な振る舞いを、ユーザーが最も使いやすい状態に合わせること
- 一度設定したら、変更する頻度は比較的低い
- VA公用文での例:フォント、用紙サイズ、余白、マークダウン記号など
2. 動的設定(実行条件の指定)
- 実行のたびに内容が変わる可能性がある「処理の条件」を、ユーザーが対話的に指定すること
- 変更する頻度は比較的高い
- VA公用文での例:文書の種類、ページ番号、行番号など
VBAプログラミングの特殊な環境
VBAは、他のプログラミング言語とは異なる特殊な環境にあります。
アクセシビリティの高さ
- WordやExcelの「開発」メニューは、デフォルトでは非表示ですが、誰でも有効にできます
- VBE(Visual Basic Editor)への アクセスも、特別なソフトウェアを必要としません
- パスワードで保護されていない限り、コードを変更することは誰でも可能です
コード変更の容易さ
- ある程度の専門知識は必要ですが、定数を変更することで確実に設定を変更できます
- 外部の設定ファイルや複雑なインストール作業は不要です
- 変更内容は即座に反映され、動作確認も簡単です
オプション機能実装の課題
一方、ユーザーフォームで設定値の変更が可能なオプション機能をVBAで実装することには、つぎのような問題点があります。
実装上の複雑化
- ユーザーフォームの作成と保守が必要
- 設定値の保存・読み込み機能が必要
品質管理上のリスク
- コードの複雑化によるバグの増加
- 設定パターンの組み合わせ増加によるテストケースの増大
VBAにおけるオプション設計の指針
これらの特性を踏まえ、VBAアセットのスタイルを次のように定めたいと思います。
オプション機能の設定項目は動的設定に留め、静的設定はVBAの定数変更で対応する。
具体的な判断基準
- 頻繁に変更が必要な設定 → オプション機能として実装
- 標準化が必要な設定 → 定数で固定(VBEで変更可能)
このスタイルには、「できるだけ多くの方にVBAに親しんでもらいたい」という私自身の思いも込められています。
VBAアプリケーションの開発においては、「全てをオプション化する」のではなく、「本当に必要なオプションを見極める」ことが、結果的にユーザーにとって使いやすいツールを作ることにつながるのではないかと考えています。
コメント