2016-12-09 4 views
0

問題は次のとおりです。 - あるマクロで定義されたベクトルがあり、別のマクロでベクトルから値を呼び出そうとします。すべてのオブジェクトが公開されているにもかかわらず、2番目のマクロはベクトルと協調しません。どんな方法をとってもいただきありがとうございます。VBA - 別のマクロで定義されたベクトルから値を呼び出す

私のコードは以下の通りです:

Public qj As Integer 
Public pp_ii(5) As Variant 

Public Sub Loop_over_pp() 
Dim myarray As Variant 
    pp_ii = Array(51, 52, 53, 54, 55) 
    For qj = 0 To UBound(pp_ii) 
     Call Macro1 
    Next qj 
End Sub 

Public Sub Macro1() 
    Worksheets("List1").Range("A" & qj) = pp_ii(qj) 
End Sub 
+0

それは依存だ場合、それはパラメータでなければなりません。グローバルを使うのではなく、2番目の 'Sub'に配列を渡すだけです。 – Comintern

+1

'Public PP_ii(5)As Variant'を' Public PP_ii()As Variant'に変更してください。 –

+0

@ ScottCranerのアイデアを使って、あなたの公開宣言で '(5)'を取り出し、 'For qj = 0'を' For qj = 1'に変更することができます。これを補正するには、 'Array(0、51、52、53、54、55)'を追加します。これは 'Array'の最初のオブジェクトをスキップしますが、目的の出力が得られます。 – SalvadorVayshun

答えて

1

ソリューション:

Public qj As Integer 
Public pp_ii() As Variant 

Public Sub Loop_over_pp() 
    pp_ii = Array(51, 52, 53, 54, 55) 
    For qj = 0 To UBound(pp_ii) 
    Call Macro1 
Next qj 
End Sub 

Public Sub Macro1() 
Worksheets("List1").Range("A" & qj + 1) = pp_ii(qj) 
End Sub 
関連する問題