• 締切済み

Rectangleクラスのselectメソッド失敗

EXCEL VBAで図形を描画するものを作成して動かしていました。 今までは通常に動作していたのですが、ある時から急に下記メッセージが表示してしまい。 それ以降、エラーが出続けています。 実行時エラー1004 Rectangleクラスのselectメソッドに失敗しました。 その図形を選択すると、四角形65580となっており、65536を超えている からかと想定しています。 図形の作成数を初期化すれば直るような気もしますが、どなたか 原因と対処方法が分かる方はいらっしゃらないでしょうか? なお下記の様に記述しています。 Sheets(シート名).Select ActiveSheet.Rectangles.Add(変数1,変数2,変数3, 変数4).Select Selection.Interior.ColorIndex = 変数5 Selection.SendToBack

みんなの回答

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.2

僕もカウント100万以上まで育った子もってます。今にも爆発しそうでドッキドキ。すこし調べなきゃとは思ってますが、カウント初期化はできないかも・・・。 そして、問題原因は別じゃないかと。 想定で終わらず、裏付け取らなきゃキケンですよ。 というか、こんな問題では?↓ -- myメモ帳より -- Excel2003、再描画ON(ScreenUpdating=True:デフォルト値)で、大量のシェイプを描画すると、1004エラーが発生することあり。 ShapesのAddTextBox/Group/Deleteで発生を確認。  ・発生頻度低(デバッグの中断がトリガー??)  ・一度発生すると毎回発生  ・エラー発生後、「継続」やステップ実行が可能 ファイルが壊れるっぽいので、要ファイル再作成。 現象から、おそらく描画絡み。タイミングや負荷が影響? 対処としては、  ◎ScreenUpdating = False  △直前でシートやシェイプを.Select/.Activate ------ 同一問題だといいんですが、どっちにしても不明だらけ。Excelが図形まわり弱いのだけは確かです。とりあえずファイル作り直してみて、再発さえしなければ忘れてよい気も。 分からないなら受け入れるしか・・・ 一応対策として、ScreenUpdating = Falseと、Selectしないのがオススメです。  Dim s as Rectangle  Set s = Sheets(シート名).Rectangles.Add(...)  s.Interior.ColorIndex = 変数5  s.SendToBack

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

そのBookの中で該当シートのコピーをつくり 元のシートを削除し、コピー作成したシートを元の名前につけなおしてください。

mohba0702
質問者

お礼

DreamyCatさん、ありがとうございます。 確かに言われたやりかたで、できるようになりました。 1回の操作で1.5万個位の描画をするので5回程度の 実行でまたエラーになってしまいそうです。 本操作をマクロ化すればよいのかもしれませんが、 マクロで数値を初期化する手段はないものでしょうか?

関連するQ&A