Excel VBA質問箱 IV

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

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


18399 / 76732 ←次へ | 前へ→

【63775】Re:関数の戻り値でSetを使う場合、解放するタイミング
発言  ichinose  - 09/12/12(土) 7:39 -

引用なし
パスワード
   ▼木木木 さん:
おはようございます。


>大まかに、上記のようなコードを書きました。
>GetAの戻り値をSetで設定しているのですが、表の取得成功時に、
>  Set GetA = Nothing
>で解放するタイミングが存在しないと思うのですが、関数の場合は解放しなくてもいいものなのでしょうか。
GetAは、インターフェースにすぎないので不要だと思いますよ!!
(Fucntion定義のGetAに値を設定することもできませんしね)


別の例で・・・、

新規ブックにて、

クラスモジュール(Class1)に

Option Explicit
Private Sub Class_Terminate()
  Debug.Print "ok"
End Sub


標準モジュールに

Option Explicit
Sub main()
  Call geta
  MsgBox "stop"
End Sub
Function geta() As Class1
  Set geta = New Class1
End Function

このmainを実行すると、メッセージ「stop」が表示された時点で
イミディエイトウインドーには、okが表示されますよね?

この事から、データを受け取る変数がない場合は、インスタンスが
開放されている事がわかります。

Sub main2()
  Dim a As Class1
  Set a = geta
  MsgBox "stop"
  Set a = Nothing
End Sub

↑このコードとイミディエイトウインドーに okと表示されるタイミングを
比較してみてください。

1 hits

【63774】関数の戻り値でSetを使う場合、解放するタイミング 木木木 09/12/12(土) 1:41 質問
【63775】Re:関数の戻り値でSetを使う場合、解放する... ichinose 09/12/12(土) 7:39 発言
【63776】Re:関数の戻り値でSetを使う場合、解放する... arajin 09/12/12(土) 8:29 回答
【63777】Re:関数の戻り値でSetを使う場合、解放する... ichinose 09/12/12(土) 9:33 発言
【63781】Re:関数の戻り値でSetを使う場合、解放する... 木木木 09/12/13(日) 13:58 お礼

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