【发布时间】:2021-10-06 09:49:34
【问题描述】:
我正在尝试构建一个循环来打印每个月的第 15 天和最后一天的列表。列表的开始日期将取决于当前日期 (num_day),而此类列表的长度将取决于给定的 N 数。
例如,如果今天是 30/07/2021(dd/mm/yyyy 格式),并且 N = 5,则列表应如下所示:
- 31/07/2021、15/08/2021、31/08/2021、15/09/2021、30/09/2021
我当前的 VBA 代码如下:
Sub print_dates()
N = 9
For i = 0 To N - 1
curr_day = DateAdd("m", i, Date)
num_day = Format(Date, "dd")
If num_day <= 15 Then
If i Mod 2 = 0 Then
print_day = "15/" & Format(curr_day, "mm") & "/" & Format(curr_day, "yyyy")
Else
print_day = DateSerial(Year(curr_day), Month(curr_day), 0)
End If
Else
If i Mod 2 = 0 Then
print_day = DateSerial(Year(curr_day), Month(curr_day), 0)
Else
print_day = "15/" & Format(curr_day, "mm") & "/" & Format(curr_day, "yyyy")
End If
End If
Debug.Print print_day
Next i
End Sub
使用我当前的代码,列表的结果是:
- 2021 年 6 月 30 日
- 15/08/2021
- 31/08/2021
- 15/10/2021
- 2021 年 10 月 31 日
- 15/12/2021
- 2021 年 12 月 31 日
- 15/02/2022
- 28/02/2022
代码将跳过奇数月份(7、9、11 等)。此外,该列表从上个月的最后一天开始。 对如何达到预期结果有什么建议吗?
非常感谢。
【问题讨论】:
-
好吧,它会跳过,因为您要为每个循环添加一个月,但您希望每个月有两个输出。
标签: excel vba loops date for-loop