2016-07-29 25 views
0

這似乎是一個簡單的問題,但我花了幾個小時沒能解決...... 我想有我透視表更新現有的過濾器包括本月的所有日期。我定期更新數據源,並且此數據源包含從今年至今的數據。在我的數據透視表中,我只想看看本月的數據。所以我寫了這個:VBA錯誤而更新的數據透視表過濾器以顯示當月的數據僅

Dim pvtAOL As PivotTable 
Set pvtAOL = ActiveSheet.PivotTables(1) 

pvtAOL.TableRange1.Activate 
pvtAOL.RefreshTable 
pvtAOL.PivotFields("Date").ClearAllFilters 
pvtAOL.PivotFields("Date").PivotFilters.Add FilterType:=xlAllDatesInPeriodJuly 

如果我註釋掉最後一行,一切正常。如果我嘗試與包括最後一行來運行它,我得到以下錯誤:

Run-time error '448':Named argument not found 

開放給其他修復/改正,如果你看到他們,因爲我是新來的VBA。謝謝!

+0

'xlDateThisMonth'呢? excel是否也將'Date'PivotField識別爲實際日期值? [在這裏查找枚舉](https://msdn.microsoft.com/en-us/library/bb241427(v = office.12).aspx)..如果有幫助。 –

+0

我上傳一個文件名爲[01-08-14.xlsm(https://www.dropbox.com/s/xe2ipyhlad4vggm/01_08_14.xlsm?dl=0)。這是爲了適合您的目的可以修改的日期範圍。 – skkakkar

+0

@ScottHoltzman,xlDateThisMonth給出了同樣的錯誤。我訪問過枚舉頁面,但並不確定如何使用它來解決此問題。我想知道是否需要在某種程度上規定日期格式?的原始數據使用mm /日/年 –

回答

0

Microsoft's documentation是有點混亂。它表示參數的「名稱」是Type,但示例使用FilterType

當您錄製宏做了類似的事情,所創建的代碼使用Type

我使用FilterType,但使用Type工程做了一些測試並得到與OP相同的錯誤。

我建議從

pvtAOL.PivotFields("Date").PivotFilters.Add FilterType:=xlAllDatesInPeriodJuly 

改變你的代碼

pvtAOL.PivotFields("Date").PivotFilters.Add Type:=xlAllDatesInPeriodJuly 

要從「日期」字段清除現有的過濾器,這樣就可以添加新的篩選器,使用

pvtAOL.PivotFields("Date").ClearLabelFilters 

(或使用.ClearAllFilters如果你喜歡。)

+0

嗯,這確實擺脫了錯誤,代碼運行完成,但它實際上並沒有應用過濾器...此外,更新OP,因爲這是一個已經激活的數據透視表,並且已經有了一個「日期」過濾器。所以真的,我試圖更新過濾器而不是'.Add' –

+0

@KentSanner - 我已經更新瞭解釋如何使用'.ClearLabelFilters'的答案。 – YowE3K

相關問題