配列を使用してテーブルをフィルタリングしようとしています。
問題は、アレイの設定方法にある可能性があります。コードは実行されますが、テーブルはフィルタリングされません。
Sub DataQuery()
Dim wordDict As Object: Set wordDict = CreateObject("Scripting.Dictionary")
Dim i, x As Integer
Dim searchCol, searchText, demoText As String
Dim searchVals() As String
searchCol = "I"
i = 3
With Sheets("Query Sheet")
searchText = Range(searchCol & i).Value
searchVals() = Split(searchText, "|")
For x = LBound(searchVals) To UBound(searchVals)
Sheets("Total_Data").Range("A1").AutoFilter _
Field:=2, _
Criteria1:=searchVals(x), _
Operator:=xlFilterValues
Next x
End With
End Sub
コンテキストを説明するために、次のようなテキストを含むセルがあります:11/5/2019 | 11/6/2019 | 11/7/2019。
Split(…)
コードが表示されている場所でパイプ区切り文字でテキストを分割し、ループ内でこれらの各値を使用して、テーブルの1つの列に複数のフィルターを追加しようとしています。
スクリプト辞書を使用して、配列の名前を変更し、バリアントとして宣言してみました。
どうやら、配列に関しては、私はちょっと馬鹿げています。AutoFilter ...の部分が表示されているコードにわずかな変更を加えました。
Sub DataQuery()
Dim i, x As Integer
Dim searchCol, searchText, demoText As String
Dim searchVals
searchCol = "I"
i = 3
With Sheets("Query Sheet")
searchText = .Range(searchCol & i).Value
MsgBox searchText
searchVals = Split(searchText, "|")
Sheets("Total_Data").Range("A1").AutoFilter _
Field:=2, _
Criteria1:=searchVals, _
Operator:=xlFilterValues
End With
End Sub
searchVals(x)でフィルタリングせず、代わりに配列全体を一度に使用するように変更すると、問題が修正されました。
あなたのすべての協力に感謝します!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加