【发布时间】:2015-10-02 17:50:58
【问题描述】:
我尝试为我公司的部门实施一个易于使用的 Autofilter-mask。我的目的是使其尽可能灵活,以便员工无需编程即可对其进行管理。
我当前的问题是,他们想使用以下输入过滤日期:6M 等。
有人知道可以将此输入添加到 VBA 自动过滤方法吗?
我有这样的想法:
filterRange.AutoFilter
filterRange.AutoFilter 'dateColumn', "<3M"
最好的方法是将员工的输入直接传递给自动过滤方法。
提前谢谢。
【问题讨论】:
-
使用自动过滤器记录自己,并应用各种预设的日期过滤器选项,例如本周、下周、上个月、下季度等。在您完成了一些之后,停止记录器并查看您生成的代码。这应该会给你一些关于你可以为用户提供什么的想法。
-
宏记录对我没有帮助,因为它只提供常量。例如。 “xlFilterLastWeek”常量取前一周而不是最后 7 天。此外,它需要将周日至周六作为一周,这对于德语国家来说是不够的。
-
可能需要根据 VBA 中的当前日期 =
CInt(Now)进行一些数学运算。应该只是简单的减法。也就是说,一周前的CInt(Now) - 7。如果您需要它从特定日期转到其他日期,您可以添加额外的代码来处理日期并使用一些内置的 Excel 日期函数EOMONTH等。 -
我以一种不太舒服的方式解决了它。在隐藏的工作表上,“Public Function getDate(interval, no) getDate = Format(DateAdd(interval, no, Date), "dd.mm.yyyy") End Function
-
如果解决了您的问题,请发表您的评论作为答案。这有助于社区和我们这些寻找未解决问题的人。
标签: excel date autofilter vba