1次元x1次元配列を2次元配列に変換します。
Dictionaryに1次元配列を溜めておいて、
最後に2次元配列に変換する時に使用することが多いです。
いやむしろ、その為だけの関数かも...
例:DataArray = fArray_Dim11_to_Dim2(Dic.Items)
Public Function fArray_Dim11_to_Dim2(DataArys As Variant) As Variant
'1次元x1次元配列を2次元配列に変換する
'使用例:DictionaryのItemにデータ(1次元配列)を溜めておき、2次元配列に変換する
'1次元の要素数をカウント
Dim Row_L As Long
Dim Row_U As Long
Dim Col_L As Long
Dim Col_U As Long
Call fArray_Lbound_Ubound(DataArys, Row_L, Row_U)
Dim CntDim As Long
CntDim = fArray_DimCount(DataArys)
If CntDim <> 1 Then Exit Function
'1次元配列を判定
Dim IsAry() As Boolean
ReDim IsAry(Row_L To Row_U)
Dim i As Long
For i = Row_L To Row_U
If fArray_DimCount(DataArys(i)) = 1 Then
IsAry(i) = True
End If
Next
'2次元の要素数をカウント
For i = Row_L To Row_U
If IsAry(i) Then
Dim j As Long
j = UBound(DataArys(i), 1)
If Col_U < j Then
Col_U = j
End If
End If
Next
Col_L = Col_U
For i = Row_L To Row_U
If IsAry(i) Then
j = LBound(DataArys(i), 1)
If Col_L > j Then
Col_L = j
End If
End If
Next
'データ配列を準備
Dim Dim2Ary As Variant
ReDim Dim2Ary(Row_L To Row_U, Col_L To Col_U)
For i = Row_L To Row_U
If IsAry(i) Then
Dim Dim1Ary As Variant
Dim1Ary = DataArys(i)
For j = LBound(Dim1Ary, 1) To UBound(Dim1Ary, 1)
Dim2Ary(i, j) = Dim1Ary(j)
Next
End If
Next
fArray_Dim11_to_Dim2 = Dim2Ary
End Function