gpt4 book ai didi

VBA:DateAdd 和 EoMonth 在循环中间停止正常工作

转载 作者:行者123 更新时间:2023-12-04 21:03:21 25 4
gpt4 key购买 nike

所以我想做的是从一个单元格中的日期开始,然后它下面的每一行都显示一个月后的日期。所以在第 1 列的第 3 行,我有 1919 - Mar,所以我希望第 1 列的第 4 行是 1919 - Apr,依此类推。我写了一个代码来做到这一点:

Worksheets("FormattedData").Cells(3, 1) = MinDate
Worksheets("FormattedData").Cells(3, 1).NumberFormat = "yyyy - mmm"
For i = 1 To TotalMonths
Worksheets("FormattedData").Cells(3 + i, 1) = DateAdd("m", 1, Worksheets("FormattedData").Cells(2 + i, 1))
Worksheets("FormattedData").Cells(3 + i, 1).NumberFormat = "yyyy - mmm"
Next i

其中 MinDate 是先前确定的日期,TotalMonths 是先前确定的整数。当我这样做时,它会像我想象的那样工作一段时间,但在第 835 行,它开始搞砸了。这是它的外观:
1988 年 - 5 月
1988 - 六月
1900 - 1 月
1900 - 1 月

然后它会与一月重复一段时间,然后有时会显示 1900 - 二月或 1900 - 三月,但奇怪的是,最后一行将显示 2015 - 七月,这没有意义,因为前一行的单元格是 1900 年 - 3 月。即使我尝试使用 EoMonth,我也遇到了同样的问题。

在一个单独的工作表中,我尝试了以下代码,它在整个过程中运行良好:
Dim z As Date
z = "01/11/1905"
Worksheets(4).Cells(1, 1) = z
Worksheets(4).Cells(1, 2) = z
Worksheets(4).Cells(1, 3) = z
For i = 1 To 60000
Worksheets(4).Cells(1 + i, 1) = DateAdd("m", 1, Worksheets(4).Cells(i, 1))
Worksheets(4).Cells(1 + i, 2) = WorksheetFunction.EoMonth(Worksheets(4).Cells(i, 2), 1)
Worksheets(4).Cells(1 + i, 3) = WorksheetFunction.EoMonth(Worksheets(4).Cells(1, 3), i)
Worksheets(4).Cells(1 + i, 1).NumberFormat = "yyyy - mmm"
Worksheets(4).Cells(1 + i, 2).NumberFormat = "yyyy - mmm"
Worksheets(4).Cells(1 + i, 3).NumberFormat = "yyyy - mmm"
Next i

所有三列都具有相同的输出,并且完全符合我的要求。但是,如果我在以前的代码的上下文中尝试这三种通用方法,我会遇到它在 1988 年 - 六月时无法正常工作的问题。有人知道这里出了什么问题吗?

最佳答案

我自己想通了;这是我的一个愚蠢的错误。我代码中的后面部分影响了日期列的一部分,我猜这导致日期变得困惑,所以我修复了代码的索引,因此它影响了我实际上打算影响的电子表格部分.

关于VBA:DateAdd 和 EoMonth 在循环中间停止正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31186002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com