【发布时间】:2015-02-05 16:41:09
【问题描述】:
当宏在任何给定日期运行时,它应该检查当前日期并将其与一年中的不同季度进行比较,然后根据我们所处的季度更改某些单元格的值。
这是我目前正在尝试追加到当前宏末尾的内容:
Sub Dates()
Dim wb As Workbook
Dim ws As Worksheet
Dim mgr, rsk As Range
Dim d, Q1B, Q1E, Q2B, Q2E, Q3B, Q3E, Q4B, Q4E As Date
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Mutual")
Set mgr = ws.Range("B37")
Set rsk = ws.Range("F37")
d = Date
Q1B = DateValue("01/01/2015")
Q1E = DateValue("03/31/2015")
Q2B = DateValue("04/01/2015")
Q2E = DateValue("06/30/2015")
Q3B = DateValue("07/01/2015")
Q3E = DateValue("09/30/2015")
Q4B = DateValue("10/01/2015")
Q4E = DateValue("12/31/2015")
If d <= Q1E Then
mgr.Value = "Works 1"
rsk.Value = "Works 2"
End If
End Sub
我在正确的道路上吗?我确信有一种更优雅的方式来编写它,但这是我第一次编写自己的 VBA 代码。
【问题讨论】:
-
请注意:只有
Q4E在您的代码中声明为Date,该行上的所有其他变量都是Variant。 VBA 不支持这样的声明。 -
所以我必须将它们全部声明为日期?或者在每个语句前面使用 Set 会不会起作用?
-
是的,您必须将它们全部声明为日期,但您仍然可以在一行中完成。
标签: excel vba date comparison