excel - 关于如何将硬编码值转换为变量的 VBA Excel 宏问题
问题描述
我是 VBA 新手,所以感谢所有重定向。我有以下(Excel 生成)宏。还有两个问题。两者都是关于如何删除硬编码并转移到变量。
在第一个命令中,我如何等效 Ctrl End 来指定完整范围?行数每天都会变化,因此需要一种方法来每天包含所有行。
在第二个命令中,如何使用 Date 函数为 Criteria1 指定 (today-1) 和为 Criteria2 指定 (today)。
我尝试使用Date
,和其他几种变体Date()
,"Date"
但无济于事。
Excel 的特定版本是 2013。如果有更好的方法可以做到这一点,请随时告诉我如何。我怀疑还有更多更好的方法。
我正在尝试自动化通常每天手动花费 30m 的报告。这只是代码的一小部分。
干杯! ——保罗
Sub Macro7Step2()
'
' Macro7Step2 Macro
'
'
ActiveSheet.Range("$A$1:$AT$9272").AutoFilter Field:=17, Criteria1:= _
">=8/23/2021", Operator:=xlAnd, Criteria2:="<=8/24/2021"
ActiveSheet.Range("$A$1:$AT$9272").AutoFilter Field:=3, Criteria1:= _
"In Production"
End Sub
解决方案
CurrentRegion
和过滤日期
Option Explicit
Sub Macro7Step2()
'
' Macro7Step2 Macro
'
'
Dim ws As Worksheet: Set ws = ActiveSheet
' or rather something like the following instead:
'Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")
If ws.AutoFilterMode Then
ws.AutoFilterMode = False
End If
Dim rg As Range: Set rg = ws.Range("A1").CurrentRegion
rg.AutoFilter Field:=17, _
Criteria1:=">=" & Date - 1, Operator:=xlAnd, Criteria2:="<=" & Date)
' If the previous doesn't work (it doesn't on my end),
' try the following instead (note the '\'):
'rg.AutoFilter Field:=17, _
Criteria1:=">=" & Format(Date - 1, "mm\/dd\/yyyy"), Operator:=xlAnd, _
Criteria2:="<=" & Format(Date, "mm\/dd\/yyyy")
rg.AutoFilter Field:=3, Criteria1:="In Production"
End Sub
推荐阅读
- sql - 如何将 first_value 与重置一起使用
- python - 在 Python 中面临十进制到二进制的问题:转换错误
- timescaledb - 使用 time_bucket 并在 timescaledb 中加入多个表
- javascript - 第一次挂载显示列表数组为空,但页面刷新填充它并呈现数据
- dataframe - 比较 2 个数据帧
- spring-cloud - 使用 Eureka Server 作为后备
- python - 如何从while循环中提取最后两个值
- python - 用于捕获大写字母组的 Python 正则表达式帮助
- pytube - 如何使用 Pytube 下载音乐文件的播放列表?
- python - 如何绘制一个区域并从 df 列绘制一条线?