Excel VBAについての質問です。


要素数未定の配列を用意するときには、とりあえずDimで配列宣言して、要素数が確定し次第Redim、となりますよね。

これに類似のことを、要素数未定のユーザー定義型(構造体)で行うにはどうしたらよいのでしょうか?

例えば以下のような点で悩んでしまっています。
--------------------
Type hoo
b() As Boolean 'ここは要素数未定でも通る
c As Long
End Type

Sub main()
Dim bar() As hoo
a = 3
ReDim bar(a) 'このReDimも通る
bar(i).b(j) = True 'このjに相当する部分の上限値の設定方法がわからない
End Sub
--------------------
わかる方がいましたらよろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2007/06/21 23:41:09
  • 終了:2007/06/22 00:19:08

ベストアンサー

id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692007/06/22 00:03:28

ポイント50pt

こんな感じです。

Sub main()
    Dim bar() As hoo
    Dim i As Integer
    Dim j As Integer
    
    a = 3
    b = 5
    ReDim bar(a)
    For i = 0 To a
        For j = 0 To b
            ReDim bar(i).b(b)
            bar(i).b(j) = True
        Next j
    Next i
End Sub
id:oich

ドンぴしゃではなかったのですが、理解できました!

ReDimの場所を変えて、これならうまくいきました。

Sub main()

Dim bar() As hoo

Dim i As Integer

Dim j As Integer

a = 3

b = 5

ReDim bar(a)

For i = 0 To a

ReDim bar(i).b(b)

For j = 0 To b

bar(i).b(j) = True

Next j

Next i

End Sub

ありがとうございました!

2007/06/22 00:17:59

その他の回答(1件)

id:TONTON3 No.1

TONTON3回答回数212ベストアンサー獲得回数42007/06/21 23:57:36

ポイント20pt

ReDim bar(i).b(20)

ということでしょうか?

id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692007/06/22 00:03:28ここでベストアンサー

ポイント50pt

こんな感じです。

Sub main()
    Dim bar() As hoo
    Dim i As Integer
    Dim j As Integer
    
    a = 3
    b = 5
    ReDim bar(a)
    For i = 0 To a
        For j = 0 To b
            ReDim bar(i).b(b)
            bar(i).b(j) = True
        Next j
    Next i
End Sub
id:oich

ドンぴしゃではなかったのですが、理解できました!

ReDimの場所を変えて、これならうまくいきました。

Sub main()

Dim bar() As hoo

Dim i As Integer

Dim j As Integer

a = 3

b = 5

ReDim bar(a)

For i = 0 To a

ReDim bar(i).b(b)

For j = 0 To b

bar(i).b(j) = True

Next j

Next i

End Sub

ありがとうございました!

2007/06/22 00:17:59

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません