質問: vbaでオブジェクトの配列の配列の削除をすると動作異常になります vba(excel2000)でオブジェクト指向のお勉強をしておりますが、ミスか言語仕様か分からないトラブルがあり、困っております。 簡単な碁(碁盤を再現し、活き死に程度を判定する)のプログラムを作成していますが、クラス石の配列であるクラス群を作成し、更にクラス群の配列を石の黒・白別に標準モジュールで定義しています。一塊の石の群が死んでいると判定した時、その群を削除しようとするのですが、redim preserve 群の配列(添字-一番最後の)を実行すると、群の配列全体にアクセスできなくなってしまいます。redimする前に、nothingを代入するとか、もとの群(石の配列)にnothingを代入してからredimするとかしてみましたが、事態は変わりませんでした。 仕様なのか、勘違いしているのか、クラスの使い方が分かっていないのか..アドバイスお願いします。
回答: 'まずは動的配列の宣言 dim x() as integer '配列要素の宣言 dim y as integer 'お次は動的配列の再宣言 y = 100 redim x(1 to y) '...いろんな処理を経て... 'さて現在の配列から、 '88番目だけ削除しようかな...。 dim back_x() as integer redim back_x(1 to y) dim intloop as integer for intloop = 1 to y back_x(intloop) = x(intloop) next erase x redim x(1 to y - 1) for intloop = 1 to y if intloop < 88 then x(intloop) = back_x(intloop) elseif intloop > 88 then x(intloop - 1) = back_x(intloop) end if next y = y - 1 これで1個削除できたっしょ?