2017-02-16 20 views
1

このエラーの原因は何ですか?コードは私にとってまったくうまく見えます。コンパイルエラー:予想される配列 - VBA

Public n As Long, i As Long, prodCode As String 
Private Sub newArray() 

    n = wsProducts.Range("A1", wsProducts.Range("A1").End(xlDown)).Rows.Count 

    ReDim prodCode(n) 

    For i = 1 To n 
     prodCode(i) = wsProducts.Range("A1").Offset(i, 0) 
    Next i 

End Sub 
+6

'prodCode'を文字列として宣言しましたが、文字列の配列はありません – YowE3K

+2

' prodCode()As String' –

+0

@ YowE3Kありがとう!それはとても簡単でした! –

答えて

1

あなたは文字列としてではなく、文字列の配列としてprodCodeを宣言しました。

変数を配列として使用する場合は、prodCode() As Stringを使用する必要があります。


注:

Public n As Long, prodCode() As Variant 
Private Sub newArray() 

    n = wsProducts.Range("A1", wsProducts.Range("A1").End(xlDown)).Rows.Count 
    'P.S. That statement would simplify to 
    'n = wsProducts.Range("A1").End(xlDown).Row 

    prodCode = Application.Transpose(wsProducts.Range("A1:A" & n) 

End Sub 

Application.Transposeを変更するために使用されています。また、あなたはその後、「負荷」1回の転送操作で配列することを可能にするVariant配列を、使用してコードをスピードアップすることができますアレイの形状は、1 To n, 1 To 1二次元アレイから1 To n一次元アレイになる。

関連する問題