2017-07-20 5 views
2

グローバル変数の種類を宣言したいと思います。私がしたいのは、これらの変数を初期化し、マクロで使用し、他のマクロで値を変更することです。公開か定数ですか?

私は、パブリック変数としてそれを書くために始めた:

Option Explicit 
'definition of global variables 
Public r_start As Integer 
Public r_end As Integer 
Public c_little As Integer 
Public c_big As Integer 
Public c_sel_start As Integer 
Public c_sel_end As Integer 
Public c_data_start As Integer 
Public c_data_end As Integer 

Public Sub Init_Globals() 
' Access global variable initialization 
    r_start = 20 
    r_end = 833 
    c_little = 6 
    c_big = 5 
    c_sel_start = 1 
    c_sel_end = 4 
    c_data_start = 11 
    c_data_end = 101 
End Sub 

ここでの問題は、私は私の初期値を変更したい場合、私はそう私のサブプロシージャーの各Sub_Init_Globals()を呼び出す必要があり、ということです他のSubProcedures内のグローバル変数を使用している場合、これらの変更は行われません。

このような変数を作成する方法をご存知ですか?あなたはこれらの変数を宣言するとのWorkbook_Openサブに値を割り当てることができます)
1:

+0

1つのアプローチは、変数を含むクラスモジュールを使用し、そのクラスモジュールのインスタンスをインスタンス化することです。これはまだ「プロジェクトリセット」に対して脆弱です。 – Bathsheba

+0

Workbook_Open()イベントでInit_Globals()を呼び出す方法が1つあります。 –

答えて

1

は、私の知る限り、これらを理解して隣のオプションであなたを残し何の値を始めています。
More Is it possible to declare a public variable in vba and assign a default value?
2.)これらの値からなるサポートテーブルで、非表示になる別のシートを作成します。この場合、これらの値に対する変更はすべて、ブックを閉じた後でも保存されます。
3.定数を宣言し、プロシージャ内の別の変数にその値を代入します。

+1

"私は単純にコメントしますが、悲しいことに私はできません:/" - 通常、私は "あなたがコメントできないという事実は、システムを誤解する理由ではないあなたの投稿はすでにほぼ答えです。だから、答えからその行を削除するほうがいいかもしれません(もし私がそれを見ていなければ、これは本当の答えではないとは知らなかったでしょう)。 – YowE3K

+0

あなたの答えをありがとう、私は非常にきれいな何かをしたい、それは私の会社で使用するためのものです。代替シートのセルで初期化を試みます。 –

+1

返信ありがとうございます。私は新しいユーザーのコメントを禁止する方針を理解していますが、コードサンプルやスクリーンショットを求めることができないという点では、ちょっとしたことがありますので、私は即興して "共通の"ソリューションを提供する必要があります。 – AntiDrondert

関連する問題