[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/02/26(Sat) 08:57
投稿者名:おじん
Eメール:
URL :
タイトル:
ユーザ定義形の再定義について
つぎのように定義したら、エラーになります。
VBでは3次元の配列は使えますが、このような疑似3次元は
使えないのでしょうか。あるいは再定義の仕方に間違いがあるのでしょうか。
教えてください。よろしくお願いいたします。

Option Explicit
Private Type ABPOINT
a() As Long'動的配列
b   As Long
End Type
Dim ab() As ABPOINT'動的配列

Private Sub Form_Load()
ReDim ab(2,2)
ReDim ab.a(2) '修飾子が不正です
End Sub

投稿時間:2005/02/26(Sat) 10:20
投稿者名:YK
Eメール:
URL :
タイトル:
Re: ユーザ定義形の再定義について
こんにちは。
>
> Private Sub Form_Load()
> ReDim ab(2,2)
> ReDim ab.a(2) '修飾子が不正です
> End Sub

ab(2,2)の配列でaを各々定義しなければなりません。
ReDim ab(2, 2)
ReDim ab(0, 0).a(2)
ReDim ab(0, 1).a(3)
Debug.Print UBound(ab(0, 0).a)
Debug.Print UBound(ab(0, 1).a)

投稿時間:2005/02/26(Sat) 14:53
投稿者名:おじん
Eメール:
URL :
タイトル:
Re^2: ユーザ定義形の再定義について
> ab(2,2)の配列でaを各々定義しなければなりません。
ありがとうございました。
ちょっと面倒ですが、できることがわかって助かりました。

投稿時間:2005/02/26(Sat) 19:55
投稿者名:Say
Eメール:
URL :
タイトル:
Re^2: ユーザ定義形の再定義について
> > Private Sub Form_Load()
> > ReDim ab(2,2)
> > ReDim ab.a(2) '修飾子が不正です
> > End Sub
> ab(2,2)の配列でaを各々定義しなければなりません。
> ReDim ab(2, 2)
> ReDim ab(0, 0).a(2)
> ReDim ab(0, 1).a(3)
> Debug.Print UBound(ab(0, 0).a)
> Debug.Print UBound(ab(0, 1).a)

ちなみに、似たことをジャグ配列でやるとこんなかんじ
    Const a = 0
    Const b = 1
    Dim ab, a1, b1
    ReDim ab(2, 2)
    ReDim a1(2)
    ab(0, 0) = Array(a1, b1)
    ReDim a1(3)
    ab(0, 1) = Array(a1, b1)
    Debug.Print UBound(ab(0, 0)(a))
    Debug.Print UBound(ab(0, 1)(a))
    ab(0, 0)(a)(2) = "aaa"  'ab(0,0).a(2)
    ab(0, 0)(b) = 111       'ab(0,0).b
    ab(0, 1)(a)(3) = "zzz"  'ab(0,1).a(3)
    Debug.Print ab(0, 0)(a)(2)
    Debug.Print ab(0, 0)(b)
    Debug.Print ab(0, 1)(a)(3)