vba - 带有用户输入的 VBA 时间过滤器
问题描述
我有下一个知道如何在两个日期范围之间过滤的 VBA 代码:
Public Sub MyFilter()
Dim lngStart As Date, lngEnd As Date
lngStart = Range("b2").Value 'assume this is the start date
lngEnd = Range("b3").Value 'assume this is the end date
Range("A5:T5").AutoFilter Field:=17, _
Criteria1:=">=" & lngStart, _
Operator:=xlAnd, _
Criteria2:="<=" & lngEnd
End Sub
我想知道如何修改它以使其更加用户友好并相应地更新它: 1. 结束时间可以始终是当前时间。2. 我希望在开始时间单元格中我能够输入数字,例如:4、5、9,并且代码会知道将其修改为“当前日期 -4 小时”,而不是让我输入完整的日期字符串。
知道如何编辑它吗?谢谢!
解决方案
我不确定我是否理解你的问题,所以我猜测了一下。
看看这个:
Public Sub MyFilter()
Dim StartDate As Date, EndDate As Date
StartDate = DateAdd("h", -Range("b2"), Now)
EndDate = Now
Range("A5:T5").AutoFilter Field:=17, _
Criteria1:=">=" & StartDate, _
Operator:=xlAnd, _
Criteria2:="<=" & EndDate
End Sub
我已将结束日期值替换为Now
,它给出了当前时间。根据您的需要,您可能需要将其调整为今天或昨天的午夜。开始日期现在用 计算DateAdd
。小时数从 B2 中提取并从 中减去Now
。
顺便说一句 - 你需要重新考虑你的变量命名。使用 lng 为日期添加前缀不是一个好习惯
推荐阅读
- postman - 邮递员并在 x-www-form-urlencoded 请求的正文中设置变量
- java - 如何使用java获取客户端的mac地址?
- javascript - JavaScript scrollIntoView 函数不起作用 - 页面不会滚动到元素视图中
- python - 封装决定初始化哪个子类
- javascript - 在 VuetifyJS 组件中设置下拉菜单按钮宽度以阻止
- php - laravel 中间件不使用工作
- python - 如何在python中有这个加密函数的解密函数
- ios - Swift:nil 需要上下文类型
- android - WorkManager - 永久删除定期工作人员
- laravel - 如何在 laravel 查询生成器中使用联合查询编写 RIGHT JOIN