excel - For 循环函数不起作用,但会给出相同的结果,而不会出现任何消息传递错误
问题描述
一旦应用了 L 列中的日期过滤器,J1 就会计算可见项目的数量。在下面提供的代码中,我正在尝试一个日期循环,我可以在其中返回并查看特定月份。例如,查看我可能正在查看的前一个月,依此类推。
我已经尝试制作小的子宏,一旦主宏完成运行,我就可以调用它们,但我无法将它们放在一起,以便按顺序调用小宏并一个接一个地执行。
Option Explicit
Sub trial_trial_Table()
Dim StartDate As Long, EndDate As Long, mois As Long, nextmonth As Long, z As Long, x As Long, i As Long
z = StartDate
StartDate = DateSerial(Year(Date), Month(Date) - 1, 1)
x = EndDate
EndDate = DateSerial(Year(Date), Month(Date) - 0, 0)
z = 1
For z = StartDate - 1 To StartDate
z = z - 1
x = 0
For x = 0 To 12 'EndDate
x = x - 1
StartDate = DateSerial(Year(Date), Month(Date) - 1, 1) 'The first day of the previous month:
EndDate = DateSerial(Year(Date), Month(Date) - 0, 0) 'The last day of the previous month:
Sheets("Essais").Select
ActiveSheet.Range("$A$1:$M$4822").AutoFilter Field:=12, _
Criteria1:=">=" & StartDate, _
Operator:=xlAnd, _
Criteria2:="<=" & EndDate
Next x
Next z
End Sub
我希望宏起作用。如果你可以请帮忙。
解决方案
不确定,你想要完成什么。如果想在另一个子中调用“小”子,可以使用命令调用来完成:
Call NameOfSmallSub()
这样,您可以连续调用任意数量的宏。
一些提示可以让您的代码运行:
每个 long 变量在初始化时(您的 Dim 命令)都保存值 0。因此,当您在初始化后立即将 StartDate 分配给 x 时,您可以只写“x = 0”。由于您在这之后为 x 设置了另一个值,而在两者之间没有使用 x,因此根本不需要此分配。
此外,当您从数字中减去 0 时,这对其没有影响。所以不要写“Month(Date) - 0”,这将是完全相同的“Month(Date)”。我不确定,您对日期为“0”的 DateSerial 返回的期望是什么。我建议您调试您的代码行并观察所有变量以查看实际发生的情况。
您的循环将永远运行,因为您每次都会减少循环变量 x。你的循环永远不会像那样结束。但是无论如何你需要你的循环做什么?
看来,您不熟悉 vba 脚本。即使没有 vba 脚本,您可能也可以在 excel 中实现您想要的?我会提出一个新问题并描述我想要拥有的东西,并寻求一种实现这一目标的好方法。
希望这会有帮助。
推荐阅读
- azure - 如何显示由 API 创建的 Azure DevOps wiki 附件
- msbuild - 生成的文件,放在obj目录下
- c++ - C++ 多维数组帮助:遍历以查找用户输入并在找到其他属性时返回
- c# - DateTime 标记构造函数时钟前进潜在错误
- python - 熊猫提取错误:“列必须与键长度相同”
- python - 将等高线转换为点集
- firebase - firebase Admin SDK 与 firebase 控制台网页有何不同?
- sql - TypeORM 无法删除具有 ManyToOne / OneToMany 关系的行
- mongodb - 对非常大的数据最有效的 MongoDB find() 查询
- autofill - 从 Excel 自动填充 Chrome