2017-01-11 13 views
2

Microsoft Excel用のアドインを作成しています。実行時に変更されない変数を格納するモジュールを使用しています。 。これは、開発サイクルのさまざまな時点で見つけて置き換える必要があるハードコーディング値のより便利な方法です。誰もが、これは悪い習慣があるなら、私に言うことができるし、そうであれば、どのようなアクションのより良いコースは希望の場合グローバル定数を使用して環境変数を保存する

Option Explicit 
Option Private Module 

Global Const APP_ID = "XXY" 
Global Const APP_VERSION = "1.00" 
Global Const WORKSHEET_PASSWORD = "s0Me_pa$$w0rD" 
Global Const DATA_TABLE = "tblStockData" 
Global Const FORM_DEFAULT_VALUE = 200 

は私が思っていた:

変数は、アプリのバージョン、またはワークブックパスワードとの事ですあれ?

+0

ほんの少しのメモ - おそらく、 'global'の代わりに' public'を使うほうが少し良いアイデアかもしれません - http://stackoverflow.com/questions/3815547/what-is-the-difference-between-dim -global-public-and-private-as-modular-field – Vityata

答えて

3

私は通常、アプリケーションのサイズに応じて、まったく同じ、または2つのことをします。それが何か小さい場合、私はあなたのアプローチを使用します。しかし、これは私が使用する他のアプローチです。

最初のアプローチ:

ユーザーがパスワードやDEFAULT_VALUEを変更することになっている場合は、私は、「設定」と呼ばれる別のシートを、作り、私はそこにそれらを書きます。これは定数とパブリック変数のたくさんの大きなアプリケーションである場合は、スコープが何らかの形で「汚い」を取得し、それがある

public function GetPassword as string 
    GetPassword = [set_password] 
end function 

第二のアプローチ:それから私はこのようなパスワードの公開機能を作ります変数を見つけるのが難しい。したがって、私は定数のクラスを作り、私はそれらをそこに宣言します。そして、それを呼び出す方が簡単です。このような

何か:私のクラスはclsConstantsある場合

Private Const p_First_COLUMN_TO_FILL = 8 

Public Property Get FIRST_COLUMN_TO_FILL() As Long 
    FIRST_COLUMN_TO_FILL = p_First_COLUMN_TO_FILL 
End Property 

はこのように、私はPublic objCon As clsConstantsとしてそれを宣言し、今objCon.FIRST_COLUMN_TO_FILLと私は私が欲しいものを手に入れます。スコープは何とかこのようにクリーンです。また、何が使用されているかに応じて、複数のクラスの定数を構築することもできます。

関連する問題