2016-09-15 12 views
0

でも、私はまだ配列を解明しようとしていますが、私は素早く学習していますが、複数のサブで使用されているVBA多次元配列

私は複数のサブシステムに渡って配列を参照しようとしています。ボタンをクリックすると、配列に文字列と整数を代入しています(これはうまくいきます)。

配列はパブリックに宣言されています。

マルチアレイを異なるサブシステム間で動作させるにはどうすればよいですか?私は変種としてparamArray myArrayを使用しようとしましたが、私は何か間違ったことをしており、丁重にここで助けを要求しています。

私のコードの詳細(おそらく間違っています)、ここにデータを追加する方法、データが何であるかは、配列の使用方法に関する質問ではありません。

おかげで

Public myArray() 

Sub Main() 
redim preserve myArray(10,5) 
for z = 0 to 10 
    for y = 0 to 5 
    myArray(z,y) = 10 * Z + y 
    Next y 
Next z 
End Sub 

Sub Butn_Click() 
    MsgBox myArray(0,1) 
End sub 

Sub testcode() 
    MsgBox myArray(2,1) 
end sub 
+2

'myarrayの(Z、Y)= myarrayの(Z、Y)'これは何をすべきかをされ...ボタンのクリックが動作することを確認するためにユーザーフォームのコードであります?それは空を空に設定するか、すでに配列されていますか? –

+0

私は簡単な方法を使用しています(私は同意しません)、私は "Global_Var"という名前の専用モジュールを持っています。そして、内部でグローバル変数myArayをVariantとして宣言しています。ブック。 –

+0

'Sub Butn_Click()'は、これがワークシートのコードシートであり、モジュールコードシートではないことを示しています。ワークシート・コード・シートは本質的にプライベートであり、あなたが行ったようなパブリック変数を宣言することはできず、他のワークシート・コード・シートまたはモジュール・コード・シートで配列を使用できることを期待することはできません。 – Jeeped

答えて

0

私は問題を再現できるかどうかを確認するためにコードを修正しようとしましたが、それは典型的なものです。

ありがとうございました!

Public myArray() 

Sub Main() 
    UserForm1.Show 
End Sub 

Sub testcode() 
    MsgBox myArray(2, 1) 
End Sub 

Sub testcode2() 
    MsgBox myArray(0, 1) 
    unload userform1 
End Sub 

以下のコードは、

Sub Butn_Click() 

    ReDim Preserve myArray(10, 5) 
    For Z = 0 To 10 
     For y = 0 To 5 
     myArray(Z, y) = 10 * Z + y 
     Next y 
    Next Z 

    Call testcode 
    Call testcode2 
End Sub 
1

Public myArray() 

Sub Main() 
    ReDim Preserve myArray(10, 5) 
    For Z = 0 To 10 
     For y = 0 To 5 
     myArray(Z, y) = 10 * Z + y 
     Next y 
    Next Z 
End Sub 

Sub Butn_Click() 
    MsgBox myArray(0, 1) 
End Sub 

Sub testcode() 
    MsgBox myArray(2, 1) 
End Sub 

最初の呼び出しMain()は、testcode()

すべてが動作しているように見え呼び出してButn_Click()を呼び出します。

+0

lol typical - 私が持っていた問題を再現できるかどうかを今すぐテストするだけです。 – R3PooC