Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


57694 / 76738 ←次へ | 前へ→

【23778】Re:今日よりも過去の日付を削除する
回答  ちゃっぴ  - 05/4/4(月) 2:21 -

引用なし
パスワード
   >考えてやってみました。無駄な部分があるとは思いますが。。。
>test1もtest2も
>一度では削除できず、2度3度目で、すべて削除されます。
>理由がわかりません。なぜでしょう?

【23731】Re:For Next と For Each文の関係 
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=23731;id=excel

でも書きましたが、Cell(Row, Column)はIndexで指定できますよね?
Indexで指定できるような Collection Object を For Each 〜 Next Loop で
削除するとこのような現象が発生します。

というのは、For 〜 Next Loop を Index で
昇順(加算)に回しているのと一緒だからです。

そういった場合、逆順(減算)でLoopを回してやることにより、
回避できますが、ところがどっこいRow, Columnの削除は
非常に処理が重いのです。

これに関しては、Row, ColumnにIndexがついていることからもわかるでしょう?
削除するとそれ以降のIndexを再構成しなくてはなりませんから・・・

なので、私はめったに削除・挿入は使いません。
たいていは、Clear, ClearContentsで事足りるはずです。

ちなみに私が意図したまとめて削除とは、Loop内で開始行と終了行を取得し、
Loop終了後に削除すると言う意味です。
連続した範囲の削除は、それほど時間がかかりません。
(分断された範囲とでTestして、処理時間を計測してみるとよいでしょう)
もっとも、速度を求めるなら配列を使いますし、
Sortした上でAutoFilterを使うのはありでしょう。

あと、この私の発言は、もともとのDataがばらばらに並んでいて、
削除するものが非常に多いことが前提です。

1行しか削除しない場合とか、すでにきれいに並んでいるDataでは
こっちのほうが遅くなる場合もあります。

0 hits

【23763】今日よりも過去の日付を削除する 経理課手形大量発行担当 05/4/3(日) 16:25 質問
【23764】Re:今日よりも過去の日付を削除する IROC 05/4/3(日) 17:03 回答
【23771】Re:今日よりも過去の日付を削除する ponpon 05/4/3(日) 21:31 回答
【23774】Re:今日よりも過去の日付を削除する 経理課手形大量発行担当 05/4/3(日) 23:21 質問
【23775】Re:今日よりも過去の日付を削除する ponpon 05/4/4(月) 0:08 回答
【23805】Re:今日よりも過去の日付を削除する 経理課手形大量発行担当 05/4/4(月) 22:37 発言
【23809】Re:今日よりも過去の日付を削除する ponpon 05/4/4(月) 22:59 回答
【23810】Re:今日よりも過去の日付を削除する ウッシ 05/4/4(月) 23:09 回答
【23815】Re:今日よりも過去の日付を削除する ponpon 05/4/4(月) 23:35 質問
【23816】Re:今日よりも過去の日付を削除する ウッシ 05/4/4(月) 23:46 回答
【23817】Re:今日よりも過去の日付を削除する ponpon 05/4/4(月) 23:57 発言
【23811】Re:今日よりも過去の日付を削除する 経理課手形大量発行担当 05/4/4(月) 23:09 お礼
【23772】Re:今日よりも過去の日付を削除する ちゃっぴ 05/4/3(日) 23:00 回答
【23777】Re:今日よりも過去の日付を削除する ponpon 05/4/4(月) 1:57 質問
【23778】Re:今日よりも過去の日付を削除する ちゃっぴ 05/4/4(月) 2:21 回答
【23779】Re:今日よりも過去の日付を削除する ちゃっぴ 05/4/4(月) 2:35 回答
【23795】Re:今日よりも過去の日付を削除する ponpon 05/4/4(月) 18:20 発言
【23786】Re:今日よりも過去の日付を削除する Kein 05/4/4(月) 12:33 回答
【23808】Re:今日よりも過去の日付を削除する 経理課手形大量発行担当 05/4/4(月) 22:52 お礼
【23813】Re:今日よりも過去の日付を削除する Kein 05/4/4(月) 23:34 回答

57694 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free