我想通過VBA自動過濾Excel表格。使用VBA過濾Excel表格
該表有許多行,目前位於Sheet2的B5:N584中。 表格的第一列有「國家」作爲標題,這是我想要應用過濾器的列。我希望表格根據用戶輸入的國家名稱自動過濾。國家名稱將位於Sheet2單元格B3中,現在定義爲「= Sheet1!A1」,這是用戶輸入國家的地方。
我希望它的工作方式是: - 用戶在Sheet1的單元格A1上寫入一個國家/地區名稱。 - 國家自動被拉到Sheet2的單元格B3。 - 根據Sheet2單元格B3的內容在第一列中過濾表格。
這是VBA代碼,我已經寫了:
Public Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("B3").Address Then
Range("B5:N584").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("B2:B3")
End If
End Sub
在B2單元格中我已經寫了「國家」,就像在列標題。
我所做的幾乎工作。唯一的問題是過濾器沒有被自動應用。單元格A1上的用戶輸入的國家被拉到Sheet2的單元格B3,但是直到我單擊單元格B3的公式欄並單擊輸入而不更改任何內容時才應用該過濾器 - 然後將該過濾器應用於下表。
我想知道什麼可能會阻止表自動檢測有一個新的國家在單元格B2上,而不必點擊單元格,然後按ENTER鍵。
謝謝。
謝謝你的幫助。如果A1在另一張紙上,我該怎麼辦?如何引用「= Range()」中的其他表格? – franciscofcosta
您必須將'WOrksheet_Change'事件處理程序放入* other *表格中,然後限定它需要操作的表格(例如'Worksheets(「Sheet2」)。Range(「 B5:...') –