簡體   English   中英

Excel Macro Autofilter問題與變量

[英]Excel Macro Autofilter issue with variable

我有一個數據表,其中第一行是過濾器,我有一個循環,該循環更改需要在循環內部使用的過濾器是變量filterColumn,每次循環運行時都會為其分配一個新值。

當我嘗試使用filterColumn確定將“打開”哪個過濾器時,出現錯誤

范圍類別的自動篩選方法失敗

ActiveSheet.Range("$U$83:$CV$1217").AutoFilter Field:=filterColumn, Criteria1:="<>"

為了使用變量確定過濾器位於哪個字段中,正確的語法是什么?

解決問題我找到了解決方案。 我實際上是在整個過濾器中引用過濾器列的位置,而實際上我應該在過濾器組中引用它的編號。 例如,我要更改的過濾器位於“ CF”列中的第84列中,但我要更改的過濾器在該組中排名第64位。

Dim filterColumn As Integer
filterColumn = 2
ActiveSheet.Range("$U$83:$CV$1217").AutoFilter Field:=filterColumn, _
    Criteria1:="<>"

編輯 :我嘗試@HeadofCatering的解決方案,並最初失敗了。 但是,我在引用的列中填充了值,並且它起作用了(我的解決方案在相反的條件下也失敗了-將列標題設置為空白,它將失敗)。

但是,這與我(也許您已經)看到的內容不太吻合-您絕對可以為帶有空白標題的列添加過濾器。 但是,有一件事情與我看到的失敗是一致的filterColumn引用了Application.UsedRange之外的列。 您可能想要嘗試驗證您所引用的列是否確實在Application.UsedRange (簡便方法:在“即時窗口”中運行Application.UsedRange.Select ,然后查看是否已選擇該列)。 由於您要引用大量的列,因此可能沒有某個點(包括列標題)之后的值,並且當您指定要過濾的列時,實際上是在UsedRange之外指定了某些UsedRange

要測試的一件有趣的事情(這對我也是新的),是一張空白紙,在單元格A1B1填寫值,選擇列A:G並手動添加自動過濾器-這只會將過濾器添加到列A和B(如果您嘗試將過濾器添加到完全空白的工作表中,則會發現相關情況)。

對不起您的胡言亂語-這可能甚至不是您的問題:)


舊的解決方案(使用上述條件時不起作用)

我可能對此過於矯kill過正,但也請嘗試設置工作表值(請注意,我在此處使用了示例范圍):

Sub SOTest()

Dim ws As Worksheet
Dim filterColumn As Integer

' Set the sheet object and declare your variable
Set ws = ActiveSheet
filterColumn = 2

' Now try the filter
ws.Range("$A$1:$E$10").AutoFilter Field:=filterColumn, Criteria1:="<>"

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM