2017-01-30 4 views
0

空の動的配列に値を追加する方法を知りたいと思います。VBA - 空の配列にセルの値を追加する

私は条件が真の場合の値を追加したい場合、条件の特定に基づいて、

Dim ratioArray As Variant 

そして空である次の配列を定義しています。だから私は次のようにしようとしたが、それは実行時エラー '13'を返します。

ReDim Preserve ratioArray(UBound(ratioArray) + 1) 
ratioArray = Cells(8+a,4+o) 

aおよびoは整数変数です。

ReDim Preserveの何が問題になっていますか?

ありがとうございます!作業溶液として

+1

エラーがREDIMステートメントでないかもしれないが、次の行' ratioArray =を'ratioArray(Ubound(ratioArray))= Cells(8 + a、4 + o)' –

+0

実際に、コードを実行すると、ReDimステートメントでエラーが発生します。私はあなたの提案を実行するだけでなく、ランタイムエラー '13'を与えます。 – vbalearner

+1

まず、「Dim ratioArray As Variant」の代わりに「Dim ratioArray()As Variant」が必要です – tretom

答えて

0

単なる例:バリアントは、その時点での配列であることが知られていないため、

Sub Test() 

    Dim ratioArray() As Variant 

    ReDim ratioArray(1) 
    ReDim Preserve ratioArray(UBound(ratioArray) + 1) 
    ratioArray(1) = Cells(1, 1) 
End Sub 
+0

ありがとうございました。それは働いている。私は配列の次元を定義し、最初の要素を含むように次元を変更する必要がありました。それは私の質問を解決しました! – vbalearner

+0

配列の終わりに配列b()を追加して、値のシーケンスを配列c()に変換しようとしています。どうすればいいですか?私は2つの異なる方法で試しました。 ii)c()= a()、次に配列b()を追加する必要があります。これはできません。いくつかの助けてください! – vbalearner

+0

もし正しいとすれば、配列a()の長さを変数に保存する必要があります(例えばlenOrigA)。Redim a()配列の長さを配列a()+配列b()の長さで保持し、 lenOrigAの位置からの配列b()から配列a()への値 – tretom

0

UBound(ratioArray)は失敗します。

それが配列してください:配列は無次元であるため、Dim ratioArray() As Variant

それはまだ失敗しますただし、事前にそのUbound()を読みにいくつかの点でRedim ratioArray(0)を呼び出す必要があります。

単一の値を割り当て、インデックスを使用:細胞(8 + 4 + O)は `そうでない

ratioArray(0) = Cells(8+a,4+o) 
+0

ありがとうアレックスK.問題は、配列は無次元だった。 – vbalearner

関連する問題