フィルター オプションを使用して範囲をフィルター処理しようとしています。
ActiveSheet.Range("$K$2:$ZZ$200").AutoFilter Field:=11, Criteria1:="yes"
基本的に、列 U をフィルター処理して yes にします。
私が持っているのはドロップダウンリストで、その範囲のエントリがどのフィールドにあるかを見つけるために必要です。たとえば、列 U には「John」という名前が含まれています。
したがって、ドロップダウンから John を選択した場合、範囲を確認し、John 列を見つけて、それがどのフィールドであるか (この場合は 11) を返す必要があります。
列 T には Ben という名前があります。ドロップダウン リストから Ben を選択すると、同じフィルターが実行されますが、フィールドは 10 になります。
とにかく、ドロップダウンから選択されたものに応じてフィールド番号を計算できますか?
Sub Report()
Dim oSht As Worksheet
Dim lastRow As Long
Dim LastCol As Long
Dim nice As Long
Dim strSearch As String
Dim aCell As Range
Set oSht = Sheets("Overview")
lastRow = oSht.Range("B" & Rows.Count).End(xlUp).Row
With ActiveSheet.Shapes("Dropdown").ControlFormat
strSearch = .List(.Value)
End With
MsgBox strSearch
Set aCell = oSht.Range("K2:Z100").Find(What:=strSearch, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
nice = aCell.Column - 10
ActiveSheet.Range("$K$2:$ZZ$200").AutoFilter Field:=nice, Criteria1:="yes"
End If
End Sub
これが私がそれを機能させた方法です。ここで、ドロップダウンからオプションを変数として保存し、マクロを設定してフィルターをクリアする方法を知る必要があります。PS - 「オブジェクトが必要です」と言い続けたため、最後の列検索ビットを機能させることができなかったので、代わりに手動で設定しました