【发布时间】:2018-04-05 06:25:29
【问题描述】:
快速提问:我有一个小的 vba 脚本,它根据多个条件用日期填充一系列单元格。我想采用这个日期范围并将周末的任何日期替换为下周一。我正在尝试使用Weekday 和Workday 来执行此操作(请假设所有变量都已正确定义):
i = 6
For i = 6 to LastRow
If Weekday(Cells(i, "I"), vbMonday) > 5 Then
Cells(i, "I") = Application.WorksheetFunction.Workday(Cells(i, "I"), 1, 1)
End If
Next i
据我所知,Weekday 旨在接受日期,而不是单元格引用。我不确定如何在 for 循环中将日期传递给它。有什么建议吗?
【问题讨论】:
-
请添加您的输入数据示例和预期输出
-
如果您引用的单元格包含日期,只需使用
Weekday(Cells(i, "I").value, vbMonday)-WorksheetFunction.Workday()也是如此。另外最好不要Cells(i, "I") =,而是Cells(i, "I").value =- 换句话说,明确地将结果分配给值。 -
您缺少的一件事是有两个可选参数。您应该在 vbMonday 之前添加 , 。
-
非常感谢你们。弄清楚它是什么 - 该范围内的一些单元格包含文本,Weekday 无法处理。我刚刚错过的简单问题。