シート間の遷移方法

 アプリケーションとして作成するのであれば、シートタブを直接選択するのではなく、シートタブを隠し画面やフォーム等に配置したボタン等で遷移するほうがよいだろう。

 気をつけたいのが、ショートカットキーによるシート遷移の防御である。せっかくタブを隠してマウスでは画面制御を防止したつもりでも、ショートカットキーでは難なく破られてしまう、ということがある。


終了や保存の制限

 途中で右上の終了ボタンを押されたりしても問題ないか?ブック自体を保存できてもよいか?まずいのならそれを制限しておく方がよい。



セルの書式 DB上の項目の型

 Excelのシートをインターフェースとすることを想定してであるが、DBからシート、シートからDBへデータを書く場合に、どういう型、どういう書式が最適かを検討しておく方がいい。

 これが不適切だったり中途半端だったりすると、不具合の原因にもなりうる。



Excel VBAでコーディングする場合、モジュールを上手に使い分けるのが保守性向上のポイントでもある。

Microsoft Excel Objects には次のモジュールがある

○VBEで追加/削除できないモジュール

  ・各シートに対応するモジュール

  ・ThisWorkbook

○VBEで追加/削除できるモジュール

  ・標準モジュール

  ・フォームモジュール

  ・クラスモジュールがある。


この使い分け、意味の違いは、とても重要なポイントである。プロジェクトにより、どう分割するかの方向性は決める必要がある。


経験則では、シートモジュールにどこまでの役割をさせるかがポイントになる。

というのも、クラスモジュール主体のオブジェクト指向的にした場合、シートは「生成しなくても存在しているもの」であり、例外的な扱いになってしまうのである。


現在携わっているプロジェクトでは、シート上の表の桁位置などはそのシートのプライベート値とし、シートを独立させている。こうすることでシート上のデータにアクセスするのは該当シートのモジュールに限定させることができ、修正時の変更範囲を限定することができている。


★代替記事作成中


画面の遷移についてはメンテナンス性や拡張性を考えると標準化しておく方が望ましい。


Excelでのユーザーインターフェースは

シート

 ・セル形式のシート(Worksheet)

 ・グラフのシート(Chart)

ダイアログ

 ・フォーム(Form)

 ・組み込みダイアログ(メッセージボックス、ファイル選択ダイアログなど)

くらいであろう。


また、遷移のパターンは

・シートからシート

・シートからダイアログ、ダイアログから元のシート

・シートからダイアログ、ダイアログから別のシート

・ダイアログ表示中に別のダイアログ、そのダイアログから元のダイアログ

 (例:ダイアログへの入力エラーを表示する場合など)

など、多岐にわたる。

ただし、パターンを減らす方が生産性も保守性も、更には操作性も向上するので、あまり特殊なことは控えたほうがよい。


この繊維パターンごとに呼び出し方法を定形化しておくと生産性/保守性は高まるだろう。