- 締切済み
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
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ap_2
- ベストアンサー率64% (70/109)
僕もカウント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)
そのBookの中で該当シートのコピーをつくり 元のシートを削除し、コピー作成したシートを元の名前につけなおしてください。
お礼
DreamyCatさん、ありがとうございます。 確かに言われたやりかたで、できるようになりました。 1回の操作で1.5万個位の描画をするので5回程度の 実行でまたエラーになってしまいそうです。 本操作をマクロ化すればよいのかもしれませんが、 マクロで数値を初期化する手段はないものでしょうか?