2014-12-03 96 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