94085


目的：  
2次元の動的ジャグ配列を作りたい  
2次元目のみを後から拡張したい

1次元配列をvariant形で宣言し、中にまた1次元配列を格納する方針を取りました。  
3つの方法を試しましたが、どれもエラーになってしまいました。  
正しい方法を教えてください。

方針1：  
2次元目を直接redimで拡張する

[code]

    Sub main()
        Dim arr(10) As Variant
        arr(0) = Array(1, 2, 3)
        redim arr(0)(3)'コンパイルエラー：構文エラー
        arr(0)(4) = 4
    End Sub
    
[/code]

方針2：  
1次元目のみを別の配列に渡してから拡張する

[code]

    Sub main()
        Dim arr(10) As Variant
        arr(0) = Array(1, 2, 3)
        Dim arr2
        arr2 = arr
        ReDim arr2(3)
        arr = arr2'コンパイルエラー：配列には割り当てられません
    End Sub
    
[/code]

方針3：  
要素の追加を関数化する

[code]

    Sub main()
        Dim arr(10) As Variant
        arr(0) = Array(1, 2, 3)
        Call push(arr(0), 4)'コンパイルエラー：　型が一致しません：配列またはユーザー定義型を指定してください
    End Sub
    
    Function push(arr() As Variant, v As Long)
        ReDim arr(UBound(arr) + 1)
        arr(UBound(arr)) = v
    End Function
    
[/code]


CC BY-SA 4.0
2023-03-06T11:44:37.217
94084
2023-03-06T12:25:36.177
51403
question
vba array
VBA 2次元の動的ジャグ配列


「方針２」で良いかと思います。

[code]

    Sub main()
    
        Dim arr(10) As Variant
        Dim arr2
        
        arr(0) = Array(1, 2, 3)
        arr2 = arr(0)
        ReDim arr2(3)
        arr(0) = arr2
        
    End Sub
    
[/code]


CC BY-SA 4.0
2023-03-06T12:25:36.177
94085
2023-03-06T12:25:36.177
39819
94084
answer