2015-03-03 137 views
-2

我想寫一個宏,將filer之間的兩個日期,但我不知道如何做到這一點。所有我的日期是在D列。我試圖過濾使用此代碼但過濾器不起作用。創建一個宏來過濾兩個日期之間vba

Sheets("All").ListObjects("Table_Name").Range.AutoFilter Field:=4, _ 
    Criteria1:=DTPicker1, Operator:=xlAnd, Criteria2:=txtEDate 
    Sheets("All").Select 
+1

什麼是'DTPicker'和'txtEDate'?如果您有日期列,則您看到的值可能是(例如)3/3/15或3Mar15或2015-03-03。但這些只是顯示格式。 Excel背後的日期是自1/1/1900以來的天數。例如3Mar15是42066.請嘗試過濾適當的數字。 – 2015-03-03 09:12:14

回答

0

您輸入代碼的方式會過濾兩個確切的日期。如果你正在尋找一個時間範圍,那麼你需要通過包括比較跡象,如<和>在你的代碼擴展:

Sheets("All").ListObjects("Table_Name").Range.AutoFilter Field:=4, _ 
    Criteria1:=">=" & DateSerial(Year(DTPicker1), Month(DTPicker1), Day(DTPicker1)), Operator:=xlAnd, Criteria2:="<="DateSerial(Year(txtEDate), Month(txtEDate), Day(txtEDate)) 

此外,我總是喜歡用DateSerial在VBA,以確保日期被認可並被輸入。如果您正在處理不同的國際日期格式,它也消除了可能出現的問題。

您可能還需要刪除任何先前的過濾器:

Sheets("All").ShowAllData 

否則,你的代碼將剛剛添加到現有的過濾器。

相關問題