どなたか教えてください。
配列でわからないことがあります。
Dim curKingaku(100) As Currency
と宣言してあります。
intCnt = 0
Do While (0 = oraDynaset.EOF)
curKingaku(intCnt) = oraDynaset.fields("*****")
intCnt = intCnt + 1
loop
このとき、Oracleのデータは50件だったとすると、
curKingaku(0-49)までしか使用していないですよね。
データはcurKingaku(49)までですよ
ということがわかる方法はないでしょうか。
たとえば、curKingaku(50)にはNullが入っているとか。
以上
よろしくお願いいたします。
あまり意味がわかってないのではずしてるかもしれませんが、
UBound(curKingaku)で配列で使用できる添字の最大値を、
長整数型 (Long) の値で返せます。
如何でしょか?
Dim curKingaku() As Currency
intCnt = 0
ReDim curKingaku(oraDynaset.Count)
Do While (0 = oraDynaset.EOF)
curKingaku(intCnt) = oraDynaset.fields("*****")
intCnt = intCnt + 1
loop
ってのは、どうですか?
添字ゼロから値を入れているので、
ReDim curKingaku(oraDynaset.Count)
でなくて
ReDim curKingaku(oraDynaset.Count - 1)
ですね。
K様、てつじ様、どうもありがとうございます。
回答をいただいてもうしわけないのですが、ちょっと違うのです。
データをとってくるところは
クラスモジュールで行います。
標準モジュールでとってきたデータをエクセルに出力するんです。
その際、とってきたデータの数だけループさせるということなのですが。。。。
伝わっていますか?説明下手で申し訳ないです(^-^;;
そこで、配列の数は変動するので、データが入っているところと入っていないところの
見分け方というか。。。そういうのがあったらいいなとおもったのですが。。。
データが入っていないところには
Null、0、ゴミ、空
のどれかがはいっているのでは?と思っているのですが、
ゴミ意外ならそれをループの条件にしようと思っています。
少し調べてみます。
どうもありがとうございます。
とろさん、ありがとうございます。
てつじさんととろさんの案から考えると、
orDynaset.countの値を標準モジュールに渡してあげれば
良いということですかね!?
きっと。
皆様、ありがとうございます。
てつじさんととろさんの意見を元にやってみたところ、
できました。本当にありがとうございます。