【发布时间】:2022-08-17 17:17:54
【问题描述】:
我有两个日期,都在一个命名的单元格中。 Range(\"NewStartDate\").Value = 24/07/2022 和 Range(\"FinishDate\").Value = 31/12/2023
我需要所有列都有标题,这是上一列后 7 天的日期,即 A1 是 NewStartDate,B1 是 NewStartDate+7,C1 是 NewStartDate + 7*2,等等,一旦我们到达 FinishDate,它就会结束。
我创建了这个循环
Sub FillInDates()
Dim i as Integer, d as Date, x as Date
Range(\"NewStartDate\").Value = \"24/07/2022\"
Range(\"FinishDate\").Value = \"31/12/2023\"
d = Range(\"NewStartDate\").Value
i = 1
Do While x < FinishDate
Range(\"NewStartDate\").Offset(0, i).Value = DateSerial(Year(d), Month(d), Day(d) + (7*i)
x = Range(\"NewStartDate\").Offset(0, i).Value
i = i + 1
Loop
End Sub
它会在下周用正确的内容填写以下列,但是它永远不会停止,并且出现溢出错误。为什么一旦我们超过结束日期它就无法停止?
-
FinishDate是如何定义的?此外,您还与 Range 对象进行了很多交互,这是非常低效的。填充 1xN 二维数组然后将该数组复制到整个标题范围会快得多。 -
你是什么意思它是如何定义的?它的值与 x 的值具有相同的格式,并且是 31/12/2023。
-
FinishDate 和 x 变量在您的代码中没有初始值
-
对不起,他们在我的宏中做了我只包含循环,因为我的整体代码要大得多。见编辑
-
您的问题出在其他地方 - 如果我运行您发布的代码(并添加
FinishDate = Range(\"FinishDate\")),它会达到您的预期。
标签: excel vba date while-loop runtime-error