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