如何在VBA中使用日期变量

时间:2018-10-02 14:32:36

标签: excel vba

我在excel中具有值为3/09/2018的单元格A1。我可以将其转换为VBA中的日期,如下所示。

startdate = Format(#3/09/2018#, "Short Date")

但是我无法使它与变量一起使用,例如:

value1=  ActiveSheet.Range("A1").Value
final_value = "#" & value1 & "#"
startdate= Format(final_value,"Short Date")

如何使用final_value变量来实现此目的?我正在尝试以这种方式使用过滤器来获得结果:

ActiveSheet.ListObjects("Table1").Range.AutoFilter =1, Criteria1=">="startdate

2 个答案:

答案 0 :(得分:2)

假设startdate被声明为Date变量,则可以使用:

startdate = ActiveSheet.Range("A1").Value

现在您已经澄清了自己在做什么,我将使用Double进行自动过滤(尤其是可能存在国际问题的情况),或者如果您对时间部分不感兴趣,则使用Long:

ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1=">=" & ActiveSheet.Range("A1").Value2

或:

ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1=">=" & CLng(ActiveSheet.Range("A1").Value2)

答案 1 :(得分:1)

为什么要麻烦var为日期类型?在VBA中要做的所有事情就是43168(如果您使用DMY并认为VBA是DMY友好的,则为43346)。

dim startDate as long
startDate = ActiveSheet.Range("A1").Value2