タイトル : Re^8: Cells.FindNextのループ中の解放 投稿日 : 2009/09/16(Wed) 23:51 投稿者 : 魔界の仮面弁士
> きれいに解放出来ているようです. あれ? 提示されたコードだと、 > If Not myRng Is Nothing Then > Dim 最初セル As String = myRng.Address > Do > > 'ここで300行程度のサブルーチンを呼び出してみましたが, > '問題なさそうでございます > > Dim myFindNext As Excel.Range = xlCells.FindNext(myRng) > MRComObject(myRng) > myRng = myFindNext > If myRng Is Nothing Then Exit Do > Loop Until myRng.Address = 最初セル MRComObject(myRng) '★ > End If > の★に相当する処理がループ後に行われないと、解放されないのではありませんか? 『Loop Until myRng.Address = 最初セル』という書き方をしているという事は、 このループを抜けた時点で、まだ myRng は生きているという事になりますので、 このオブジェクトもまた、解放対象になりえるかと思います。 もし、Loop 後に ★に相当する処理が無くても解放されるのだとすれば、それは ループを『If myRng Is Nothing Then Exit Do』で脱出している場合でしょうね。 # ただし、そこの条件に到達するためには、xlCells.FindNext が Nothing を返す # 必要があります。そのためには、ループ前の xlCells.Find("検索文字列") の # 検索処理がヒットせず、Nothing を返す場合ぐらいしか思い当たらないのですが…。 |