- ベストアンサー
配列プロパティをREDIMする方法はないのでしょうか?
- VB6.0のクラスモジュールには、配列として持っているプロパティをREDIMする方法がありません。
- 上記のREDIMの部分でエラーが発生し、処理が進みません。どうすれば良いのでしょうか?
- この問題に対する解決策として、別の方法で配列を拡張する必要があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
配列を返すプロパティの要素数を操作するのはクラス側に実装しないと意味が無いのではないかと思います プロパティ自体を操作するのではなく 戻ってくるオブジェクトのローカル変数配列を操作するようにすればいいのではないかと思います 受け取る変数は バリアント型にします Dim objShousai objShousai = clsKousei_K(0).PK_SHOUSAI() Redim Preserve objShousai(3) といった具合に使いましょう またプロパティで配列を扱うなら public property Get Shousai() as clsSyousai() Shousai = K_SYOUSAI() End Property Public Property Let Shousai( arShousai() as clsShousai ) K_SHOUSAI = arShousai End Property といった具合に Getの型指定に()を Letの引数に()を付けます
その他の回答 (2)
PK_SYOUSAIが標準モジュールに入っているので、いまいちクラスとの関係がつかめませんが、直接的に言える事は、#1さんの、 >Dim MyArray() As Integer ' 動的配列を宣言します。 に相当する部分が、標準モジュールにないという事です。Redimをかける場合、必ず、 Dim clsKouSei_K(0).PK_SYOUSAI() '最後の i がない のような、事前宣言が必要です。
補足
回答、ありがとうございました。 まだまだクラスの使い方の勉強不足です。 アドバイス、ありがとうございました。
- Nayuta_X
- ベストアンサー率46% (240/511)
参考まで *** ReDim ステートメントの使用例 **** 次の例では、ReDim ステートメントを使って、動的配列変数を保存するメモリ領域の割り当てと再割り当てを行います。Option Base ステートメントには、1 が設定されているものとします。 Dim MyArray() As Integer ' 動的配列を宣言します。 Redim MyArray(5) ' 5 要素分の領域を割り当てます。 For I = 1 To 5 ' 5 回、ループします。 MyArray(I) = I ' 配列を初期化します。 Next I 次のステートメントは、配列のサイズを変更して、以前の要素を消去します。 Redim MyArray(10) ' 配列の要素数を 10 に変更します。 For I = 1 To 10 ' 10 回、ループします。 MyArray(I) = I ' 配列を初期化します。 Next I 次のステートメントでは、以前の要素を消去せずに、配列のサイズを変更します。 Redim Preserve MyArray(15) ' 配列の要素数を 15 に変更します
お礼
ありがとうございました。 動的変数の使い方は知っていたのですが、 勉強になりました。 ありがとうございます。
お礼
ありがとうございます。 おかがで何とかできました。 どうやら私の書き方が違っていたようです。^^;