Excel 对于下一个循环,使用月底日期作为迭代

Excel 对于下一个循环,使用月底日期作为迭代,excel,vba,loops,date,Excel,Vba,Loops,Date,我现在有一个“For Next”循环,它在不同的年份中循环,我想修改它以循环日期,特别是每个月底。我的年度循环通用代码如下。很明显,通过年循环是相对容易的,因为你有一个开始年,这是一个整数,迭代是1。现在,我想修改循环以迭代各种月末日期。例如,2003年1月31日,2003年2月28日,…,2007年12月31日。另外,请注意,对于每个迭代,我都会创建一个新的工作表,将当前迭代的名称作为工作表的名称。同样,这对于一年来说相对容易,但是使用带有“/”的日期会使事情复杂化。有没有人对使用月末日期创建

我现在有一个“For Next”循环,它在不同的年份中循环,我想修改它以循环日期,特别是每个月底。我的年度循环通用代码如下。很明显,通过年循环是相对容易的,因为你有一个开始年,这是一个整数,迭代是1。现在,我想修改循环以迭代各种月末日期。例如,2003年1月31日,2003年2月28日,…,2007年12月31日。另外,请注意,对于每个迭代,我都会创建一个新的工作表,将当前迭代的名称作为工作表的名称。同样,这对于一年来说相对容易,但是使用带有“/”的日期会使事情复杂化。有没有人对使用月末日期创建循环以及使用日期创建工作表有什么想法?我确实有一个日期数组,所以代码可以在一个工作表中引用该数组。工作表的名称可以是任何格式。例如,“mm dd yyyy”

将任何月份的日期设为零时,将生成上个月的月末日期

dim m as integer
for m = 2 to 13
    debug.print dateserial(2016, m, 0)
next m

不能在工作表名称中使用的字符是ASCII,但可以使用Unicode字符,如

公共子读取和显示()


End Sub

我打算用datediff减去一天,但这种方法更简单。不,如果一天是1,那么它将被视为2017年1月1日
01
,但如果一天为零,则是2016年12月31日
。OP应该能够很容易地为…嵌套这个。。。接下来是问题中提供的年度报告。各位评论都很好。非常感谢你!!!下面是我最后做的事情。我上面发布的代码唯一的问题是速度似乎很慢。所以我要试试你们推荐的。
dim m as integer
for m = 2 to 13
    debug.print dateserial(2016, m, 0)
next m
d = #1/31/2003#
While d <= #12/31/2007#
    Sheets.Add(, ActiveSheet).Name = Replace(d, "/", ChrW(8260))
    d = d + 32
    d = d - Day(d)
Wend
For m = FirstYr * 12 + 2 To LastYr * 12 + 13
    Sheets.Add(, ActiveSheet).Name = Replace(DateSerial(0, m, 0), "/", ChrW(8260))
Next
' Get Range
Dim rg As Range
Set rg = ThisWorkbook.Worksheets("Returns Calc").Range("C118:C319")

 ' Create dynamic array
Dim Arr() As Variant

' Read values into array from sheet1
Arr = rg

For Each mark In Arr

        Dim CurrentDate1 As Date, DimCurrentDate2 As String
        CurrentDate1 = mark
        CurrentDate2 = Replace(CurrentDate1, "/", ".")

        Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = CurrentDate2 & " Rtns"
        'do Stuff

Next mark