2016-12-23 18 views
-5

"入力配列"(リストカウントは固定されていません)があります。その "入力配列"内の各項目の新しい配列を作成し、各項目を独自の配列の最初の項目として追加する必要があります。VBA Excelで配列内の配列に値を定義して追加する

サブ配列の量が固定されていないため、配列のサイズの配列を定義できません。

どのように定義する必要がありますか?

+0

何??????????? – cyboashu

+1

S.Oへようこそ!何か試しましたか?もしそうなら、コードを提供して、[ツアー](http://stackoverflow.com/tour)と[質問する](http://stackoverflow.com/help/how-to-ask)を見てください。 )。 – Sgdva

+0

'Redim'(これはあまりにも短かったので、私はこれも読むことをお勧めします)(http://stackoverflow.com/documentation/vba/3064/arrays/16562/dynamic-arrays-array-resizing-and-dynamic -取り扱い))。 – Comintern

答えて

1

あなたが与えた説明に基づいて、私の提案に従ってください。

フィードバックをお願いします。ここで

Private Function CreateArray(length As Long) 
    Dim arr() As Variant 
    ReDim arr(length) 
    CreateArray = arr 
End Function 

は、関数の使用例を次に示します:動的配列を作成するために

Private Function AmazingFunction(inputArray As Variant) 
    Dim size As Long 
    Dim i As Long 
    Dim tmp As Variant 
    Dim newArray() As Variant 

    size = UBound(inputArray) ' Array size 
    ReDim newArray(size) ' Resizes another array to the same size 

    For i = 0 To size ' For each value 
     tmp = CreateArray(length:=0) ' Allows you to dynamically create arrays 
            ' In this case, an array of only one element is created. 
     tmp(0) = inputArray(i) ' Sets the value of the first array element 
     newArray(i) = tmp 
    Next 

    AmazingFunction = newArray 
End Function 

補助機能

Private Sub UseTest() 
    Dim outArray As Variant 
    Dim intArray As Variant 
    Dim element As Variant 

    Dim inputArray(2) As Variant 

    inputArray(0) = "a" 
    inputArray(1) = "b" 
    inputArray(2) = "c" 
    outArray = AmazingFunction(inputArray) 

    For Each intArray In outArray 
     For Each element In intArray 
      Debug.Print element 
     Next 
    Next 
End Sub 
+0

お時間をありがとう!私はReDim newArray(size)にコードを変更しなければなりませんでした。なぜなら、私は間隔の誤差を超えていたからです。 –

関連する問題