2017-09-27 164 views
1

我一直在尋找一個解決方案,並找不到任何網上的東西,完全解釋發生了什麼事情。我看了一些其他的帖子,但他們似乎都有所欠缺。自動篩選標準與陣列

當我運行這段代碼時,它完美地工作(因爲它被記錄下來)。

ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, Criteria1:=Array(_ 
    "73578", "78759", "78765"), Operator:=xlFilterValues 

但是,當我試圖讓它更健壯,它失敗了。我想將Criteria1參數更改爲已存儲的數組。

我試圖讓下面的工作。

ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, _ 
    Criteria1:=Array(StoredArray.Values), Operator:=xlFilterValues 

Array values

我有存儲陣列,我操縱它反正但我還沒有得到任何工作。我也嘗試創建一個字符串,以完全像錄製的宏,但這也不起作用。

Dim StoredArrayString as Variant 
StoredArrayString = "73578"", ""78759"", ""78765" 
ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, _ 
     Criteria1:=StoredArrayString, Operator:=xlFilterValues 

感謝您在這裏的幫助我花了很多時間在MSDN上試圖研究這個問題,但找不到解決方案。

回答

1

我認爲你的問題是你如何定義你的數組。試試這個。

Dim StoredArrayString As Variant 
StoredArrayString = Array("73578", "78759", "78765") 
ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, _ 
     Criteria1:=StoredArrayString, Operator:=xlFilterValues 
+0

很抱歉,如果這是不清楚。我不想使用這種方法。我想使用已經定義的AKA StartingArray是我想要使用的。 – Ben

+0

即使您沒有手動創建該數組,第三行中的語法也適用於您。 'Criteria1:= StoredArray'而不是'Criteria1:= Array(StoredArray.Values)'如果我仍然不明白,請進入更多細節,以便我們提供幫助。 – BerticusMaximus

+0

我仍然遇到以下提及的相同問題。當我使用'Criteria1:= StoredArray'時,我得到它過濾,但只有一個過濾器爲我的數組中的第一個值。我懷疑我可能需要重新定義陣列,這可能是由於尺寸或尺寸。我非常感謝這項工作的幫助,因爲我無法弄清楚爲什麼這樣做。請查看原始文章中的照片,看看如何定義變量StoredArray。 – Ben

0

與開始:

enter image description here

並運行:

Sub Macro7() 
    Dim ary(1 To 3) As String 
    ary(1) = "Alice" 
    ary(2) = "Boris" 
    ary(3) = "James" 
    ActiveSheet.Range("$A$1:$D$22").AutoFilter Field:=3, Criteria1:=ary, Operator:=xlFilterValues 
End Sub 

會產生:

enter image description here

+0

這對我來說是接近的工作,我遇到的問題是它只使用我的數組中的第一個值。查看照片上面定義的陣列。 – Ben