前提
エクセルVBAで作成した入出庫管理システムがあります。
集計表出力先フォルダのパスや駐車スペース数などの、システム(ファイル)起動時からずっと不変の設定値15個ほどを、定数の宣言と初期化のために作ったモジュールにPublic Const として定数で書いてあります。
Public Const syutsuryokuPath = "C:\xxx" Public Const carSpace = 5
このシステムを別の倉庫でも使うことになりました。
別の倉庫では定数に設定したい値が違うのですが、できれば、別倉庫用に定数部分の値を書き換えた別ファイル(.xlsm)を作成するのではなく、同じファイルをコピーして使用することで、使用倉庫の増加での混乱を避け将来的な改修もスムーズになるようにしたいのです。
定数は、倉庫IDだけ
Public Const SoukoID = 1
のように、ひとつだけにして、各倉庫に配布する際にこのIDだけ書き直せばよいだけにしておいて、
Select Case SoukoID Case 1 syutsuryokuPath = "C:\xxx" carSpace = 5 Case 2 syutsuryokuPath = "C:\xxx\abc" carSpace = 10 Case 3 syutsuryokuPath = "Z:\" carSpace = 3
のように、これまで定数で設定していた各価を使用する倉庫ごとにすべて書いておけば楽なのではないか、と思っています。
実現したいこと
・Case文で値を設定(初期化)する形にしたい
・これまで定数で設定していたのと同じく、その値はどのモジュールのどのプロシージャからも使用できるようにしたい
・また、その値はシステム起動(当xlsmファイルを開く)直後から終了まで不変のまま使用できるようにしたい
この条件を満たす最適な方法が知りたいです。
「定数のように値を持ちたいけれど、初期化するときだけ条件分岐でやりたい」というのは、それほどめずらしくない希望だと思うのですが、一般的にはどういう方法が採られているのか知りたいです。
私の最初のアイデアは、
'第 1倉庫用 Public Const syutsuryokuPath = "C:\xxx" Public Const carSpace = 5 '第 2倉庫用 Public Const syutsuryokuPath = "C:\xxx\abc" Public Const carSpace = 10 '第 3倉庫用 Public Const syutsuryokuPath = "Z:\" Public Const carSpace = 3
と書いておき、配布する際に別倉庫の部分をコメントアウトする、という方法です。
しかし、もっとスマートで一般的な方法があるかと思います。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/10 01:37