2016-03-30 15 views
0

VBAには2つの関数があります。 Function1は1D配列を返します。それから私は多次元配列であるfunction2を持っています。私はこれは私が持っているものであるインデックス11D配列を多次元配列にコピーする - VBA

arr2(0,0) = "Something" 
arr2(0,1) = ("Something",arr1(0)) 
arr2(0,2) = ("Something",arr1(1)) 

から始まる多次元配列の列に関数1の配列をコピーしたいと思います。 arr1はGetRecDataで、arr2はAllChannelsDataです。

For i = 0 To UBound(channelList) 
    'the first row in the array is the channels names 
    AllChannelsData(i, 0) = channelList(i) 
    Set RecChannel = Rec.FindChannel(channelList(i), RecDevice.Name) 
    For j = 0 To total_time 
     AllChannelsData(i, j + 1) = RecChannelData.GetRecData(RecChannel, 1, 0) 
    Next 
Next 

ありがとうございます!

答えて

0

以下のコードを参照してください。

Sub Array_test() 
    Dim GetRecData(9) As String 
    Dim AllChannelsData(9, 2) As String 
    For i = 0 To 9 
     GetRecData(i) = i 
     For j = 0 To 9 
      AllChannelsData(j, 0) = j 
      AllChannelsData(j, 1) = GetRecData(j) 
     Next j 
    Next i 
End Sub 
0

変更この:多分これ

For j = 0 To total_time 
    AllChannelsData(i, j + 1) = RecChannelData.GetRecData(RecChannel, 1, j) 
Next 

For j = 0 To total_time 
    AllChannelsData(i, j + 1) = RecChannelData.GetRecData(RecChannel, 1, 0) 
Next 

私は、.GetRecData(RecChannel, 1, 0)メソッドの3番目のパラメータは、3Dパラメータを取らないことを記述しているような1D配列以降のインデックスであると仮定しています。そうでない場合は、GetRecDataメソッドが/ etc/returns/etcを拡張する必要があります。

+0

お返事ありがとうございます。 3番目のパラメータはインデックスではありません。 GetRecDataメソッドは1D配列を返すために3つのパラメータを必要とします。 – peetman

0

この "ベース" のコードは、ちょうどあなたのニーズに適合させる

Option Explicit 

Sub main() 
Dim arr1 As Variant 
Dim arr2() As Variant 
Dim total_time As Integer, i As Integer, j As Integer 

total_time = 4 

ReDim arr2(0 To 3, 0 To total_time) 
For i = 0 To 3 
    arr2(i, 0) = i 
    For j = 1 To total_time 
     arr2(i, j) = GetRecData(j + 1) 
    Next j 
Next i 

End Sub 

Function GetRecData(n As Integer) As Variant 
ReDim arr(0 To n - 1) As Variant 
Dim i As Integer 

For i = 1 To n 
    arr(i - 1) = i 
Next i 

GetRecData = arr 
End Function 

を作品