我希望你能帮我解决这个问题我有一个字符串数组,我用它来迭代地分别用它的每个值填充一列单元格,它从作为系统变量检索的当前Date开始,并向后跟踪,直到满足条件。
我遇到的问题是,数组的第一个元素的格式与输出单元格中的其余元素不同,尽管它们位于相同的循环和目标列中。
错误输出为:
- 二○二三年一月十三日**
- 01/12/2023
- 01/11/2023
- 01/10/2023
- 01/09/2023
- 01/08/2023
- 01/07/2023
但我期待的却是:
- 01/13/2023
- 01/12/2023
- 01/11/2023
- 01/10/2023
- 01/09/2023
- 01/08/2023
- 01/07/2023
我的代码如下:
Dim element() As Variant
Dim Tday, counter, adjustment As Integer
Tday = 7
i = Tday
'Here i use "adjustment" to offset days (e.g. when its monday but i need to start Friday and backwards.)
'For simplicity's sake I'm hardcoding it at 3 for this question.
adjustment = 3
While i <> 0
counter = Tday - i
'I'm Dynamically Allocate array's size as needed
ReDim Preserve element(counter)
element(counter) = Format(Date - (counter + adjustment), "mm/dd/yyyy")
i = i - 1
Wend
'SO Far the array is correctly formatted but...
'HERE IS THE PROBLEM: Reading the values of the array and placing them into cells returns an unexpected format in its first iteration:
For i = LBound(element) To UBound(element)
ThisWorkbook.Sheets(1).Range("A" & 1 + i) = Format(element(i), "mm/dd/yyyy")
Next i
正如您所注意到的,我之所以实现format函数,是因为我最终需要单元格是文本,并且采用指定的日期格式mm/dd/yyyy,因为这些将是高级过滤器的条件,高级过滤器将在源数据表中检索具有此类日期的记录。
我衷心感谢你的投入。
1.我已经尝试过将elements数组的类型更改为Date,但是这会直接在数组本身而不是在代码中导致意外行为(dd/mm/yyyy)。
- format函数第二次出现是因为它帮助我在给单元格分配数组中包含的值时保持所需的格式,唯一的例外是第一个值不会采用指定的日期格式。
2条答案
按热度按时间c9qzyr3d1#
如果需要,将单元格设置为文本格式。
mtb9vblg2#
您的程序更改的是数组的格式,而不是单元格的格式,因此您需要更改单元格的格式:
将单元格作为文本的步骤