2017-01-11 4 views
0

ユーザーフォームの初期化中に配列を設定しようとしています。私は別のユーザーフォームで作成されたパブリック変数で配列を埋めています。問題は、フォームの初期化中に配列の値を設定しようとすると、値が設定されないということです。ボタンをクリックして同じコードを使用すると、魅力的に機能します。フォームの初期化中に別のフォームのpublic変数からローカル変数を設定する

コード

Private Sub UserForm_Initialize() 
'Declare local Variables 
Dim targetGrades(1 To 5) As String 
'Set Variables 
targetGrades(1) = frmSettingsSetup.g1 
targetGrades(2) = frmSettingsSetup.g2 
targetGrades(3) = frmSettingsSetup.g3 
targetGrades(4) = frmSettingsSetup.g4 
targetGrades(5) = frmSettingsSetup.g5 

End Sub 

私はfrmSettingsSetup(G1-G5)から引っ張られているパブリック変数がそうであるように、変数が "" =あるコードを実行します。フォームの初期化中に別のフォームから変数を呼び出す方法はありますか?

+0

なぜゲッタとセッタを使用しないのですか? [this](http://stackoverflow.com/questions/29257127/vba-complicated-getter-setter-syntax)の質問に対する回答を参照してください。他のフォームを初期化するときに – Taelsin

+0

は 'frmSettingsSetup'を開いていますか?そうでなければ、それは何も価値がないので、値を得ません。フォームはクラスであり、オープンされていない場合は表示され、インスタンス値は取得されません。 – cyboashu

+0

frmSettingsSetupは隠されていますが、他のフォームを初期化すると 'frmSettingsSetup.Hide'が閉じません。 – Wally

答えて

0

これを解決するために、Globalsというモジュールを作成し、そこでグローバル変数を宣言しました。これにより、フォームの状態に関係なく変数にアクセスすることができます。

関連する問題