2014-12-03 72 views
1

試圖在我已複製和cahnged一些vba我的手。篩選器不接受日期變量

這行之有效

With ActiveSheet 
     .AutoFilterMode = False 
     rng1.AutoFilter Field:=1, Criteria1:="<>2014-12-02" 
     rng1.Offset(1, 0).EntireRow.Delete 
     .AutoFilterMode = False 
    End With 

我創建了一個名爲factorydate變量

factorydate = Worksheets("systemdata").Cells(3, "C").Value 

如何更換日期 '2014年12月2日' 與變量factorydate?是這樣的:

With ActiveSheet 
     .AutoFilterMode = False 
     rng1.AutoFilter Field:=1, Criteria1:="<>" & factorydate 
     rng1.Offset(1, 0).EntireRow.Delete 
     .AutoFilterMode = False 
    End With 
+0

嘗試:'&DateValue(factorydate)' – 2014-12-03 14:46:44

回答

1

如果.Cells(3, "C").Value的值是一個日期(或您Dim factorydate as Date),然後順序會改變,因爲日期默認的排序的數字。如果它是一個日期值,我會嘗試:

rng1.AutoFilter Field:=1, Criteria1:="<>" & year(factorydate) & "-" & month(factorydate) & "-" & day(factorydate) 

,以確保它把你的語法正確

編輯:還是這樣做:

factorydate = Format(factorydate, "yyyy-MM-dd") 
rng1.AutoFilter Field:=1, Criteria1:="<>" & factorydate 

2EDIT:最後一個選項:

factorydate = Worksheets("systemdata").Cells(3, "C").Text 

使用.Text返回確切的文本字符串以確保您的過濾器正確應用。

+0

增加了3個方法,這些方法都應該適用於您的解決方案。 – Chrismas007 2014-12-03 14:52:50

+0

謝謝克里斯,現貨! – Smudger 2014-12-03 20:27:51