我正在尝试创建一个宏,用于根据当前星期数过滤表格。
我将变量'ThisWeek'设置为当前星期数:
Dim ThisWeek As Variant
ThisWeek = "=WeekNum(TODAY())"
这将产生星期数,我正在过滤的列中有一个星期数列表(根据另一列中的日期显示WEEKNUM公式的结果)
但是我无法使用以下代码来获取接受变量的条件:
Sheet2.ListObjects("Table3").Range.AutoFilter Field:=10, Criteria1:=ThisWeek
我已经在网上搜索了两个小时,并尝试了很多变量,包括:
Sheet2.ListObjects("Table3").Range.AutoFilter Field:=10, Criteria1:=">=" & ThisWeek, Operator:=xlAnd, Criteria2:="<=" & ThisWeek
我也尝试过将变量类型更改为整数。
但是没有运气..任何帮助,我们将不胜感激!
谢谢
答案 0 :(得分:0)
自动过滤器最好的方法是将TODAY()(VBA中的日期)解析为开始日期和结束日期,然后将自动过滤器的Criteria1和Criteria2参数与{{1} }。使用Operator:=xlAnd
函数和一些小数学运算,在VBA中查找上一个星期日(或任何其他DOW)和下一个星期六是一件小事。
“工作日”和“日期”功能用于始终解析动态日期,例如5月的第二个星期日或11月的第三个星期一。
答案 1 :(得分:0)
在VBA中,您必须使用Date()
而不是TODAY(),并且要获取星期数,请使用DatePart()
。
您必须检查您所在的国家/地区如何计算周数,并修改此功能的参数firstweekofyear。
在欧洲e。 G。在VBA中使用DatePart("ww", Date, vbMonday, vbFirstFourDays)
。
工作表中对应的星期数功能是WEEKNUM(...,21)。
Dim ThisWeek As Integer
ThisWeek = DatePart("ww", Date, vbMonday, vbFirstFourDays)
Sheet2.ListObjects("Table3").Range.AutoFilter Field:=10, Criteria1:=ThisWeek
答案 2 :(得分:0)
也可以是evaluated(不确定是否需要"=" &
部分):
ThisWeek = "=" & [WeekNum(TODAY())]