|
>これは問題ないと思いますが・・・おそらく
ありがとうございます。
>他に気になることがあります。
>
>「A.a(0)」という変数名ですけど、「ドット」は使えないと思います。
>実際ドットを入れて宣言してみたら、VBEに叱られてしまいましたけど、そんなことありませんでした?
口足らずな私ですいません。。。
現在、このように宣言しています。
Private Type KOUZOUTAI
a() As String
b As Integer
End Type
Private a As KOUZOUTAI
>
>>ReDim A.a(0)
>>
>>For i = 0 To 10
>>
>> If XXX Then
>> ReDim Preserve A.a(i)
>> ---処理開始---
>> :
>> ---処理終了---
>> End if
>>
>> Erase A.a()
>>Next
>
>これだと、例えば、2.4.6.8.10がIf文で通ったとしたら、
>A.a(2),A.a(4)・・・・・・に値が入って、A.a(0),A.a(1)・・・・・・が空になるんじゃないかと思うんですが、添え字用の変数を別にする必要がないですか?
→おっしゃるとおり。
何かおかしいと思てたら、掲載したサンプルロジックが間違えてました。
すいません、間違いでした。↓
誤:For i = 0 To 10
正:Do While True
でした。つまり、グルグルLoopして条件に合えば、Redimにより拡張します。
>それと、EraseをFor Next文の中に書いてますが、これだと、いちいち解放されてしまうので、外に出さなくてはいけないんじゃないかと思いますが・・・どないでしょう?
→おっしゃるとおり。確かにそうなんですが…何を隠そう、この配列を毎回Loop毎に、
使い回ししてるんです。だから、毎Loop毎にEraceしています。
変則的なロジックですいません。。。
まとめると…
Private Type KOUZOUTAI
a() As String
b As Integer
End Type
Private a As KOUZOUTAI
Dim i As Integer
ReDim A.a(0)
Do While True
If XXX Then
ReDim Preserve A.a(i)
---処理開始---
: ←ここで構造体Aにデータを格納
: ←ここで構造体Aのデータをセルに出力
---処理終了---
End if
Erase A.a()
Loop
|
|