| 
    
     |  | 表を取得し、その表に対してフィルタをかけたりセルの数を数えたりするマクロを組んでいます。 
 '表の取得
 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つにまとめられないでしょうか。
 
 以上、よろしくお願いします。
 
 |  |