Excel VBA質問箱 IV

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

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


18400 / 76732 ←次へ | 前へ→

【63774】関数の戻り値でSetを使う場合、解放するタイミング
質問  木木木  - 09/12/12(土) 1:41 -

引用なし
パスワード
   表を取得し、その表に対してフィルタをかけたりセルの数を数えたりするマクロを組んでいます。

'表の取得
Function GetA() As Range
  Dim SttA As Range  '表の開始地点
  
  For Each SttA In Range("A1:C10")
    If SttA = "★" Then
      '取得成功
      Set GetA = Range(SttA, SttA.Offset(5, 5))
      Exit Function
    End If
  Next
  
  '失敗時
  Set GetA = Nothing
End Function

'表にフィルタをかける
Sub FilterA()
  Dim A As Range
  
  If GetA Is Nothing Then
    Exit Sub
  Else
    Set A = GetA  'Range
  End If

  '以下、フィルタをかける

  Set A = Nothing
End Sub

'表の集計を行う
Sub CntA()
  Dim A As Variant
  
  If GetA Is Nothing Then
    Exit Sub
  Else
    A = GetA    '二次元配列
  End If

  '以下、条件にあったセルの個数をカウントする
End Sub

大まかに、上記のようなコードを書きました。
GetAの戻り値をSetで設定しているのですが、表の取得成功時に、
  Set GetA = Nothing
で解放するタイミングが存在しないと思うのですが、関数の場合は解放しなくてもいいものなのでしょうか。

また、表の取得に失敗した場合に処理を中断するようにしているのですが、GetAが2回も出てきてまだるっこしく感じます。どうにか1つにまとめられないでしょうか。

以上、よろしくお願いします。

0 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 お礼

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