tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 を返す場合ぐらいしか思い当たらないのですが…。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。