VBA でフィルター範囲を使用すると問題が発生します。マクロを使用して範囲をフィルター処理し、別のマクロを使用して Subtotal ワークシート関数を呼び出して最初の列の最小値を見つけると、フィルター処理された範囲の期待される最小値が得られます。これは私が欲しいものです。これを次に示します。
Sub TestFilterTrans()
Call FilterTrans("111Wall")
End Sub
Sub TestMinDate()
MsgBox MinTransDate()
End Sub
Sub FilterTrans(Inv As String)
Range("TransLabels").Select
Selection.AutoFilter
ActiveSheet.Range("Trans").AutoFilter Field:=2, Criteria1:=Inv
End Sub
Function MinTransDate()
MinTransDate = Application.WorksheetFunction.Subtotal(5, Worksheets("Transactions").Range("TransDates"))
End Function
ただし、シートから関数を呼び出して最初にフィルター プロシージャを呼び出し、次に関数を呼び出して最小値を見つけると、次のように、フィルター処理されていないかのように、範囲全体で最小値が選択されます。
Function IncepDate(Inv As String)
Dim d As String
Call FilterTrans(Inv)
d = MinTransDate()
Call FilterOff
IncepDate = d
End Function
2 番目のケースでフィルタが機能していないように見える理由を誰か教えてもらえますか?