首页 > 解决方案 > 如何用月份的日期填充数组?

问题描述

我想用值填充一个数组,然后用数组的值填充一个组合框。

这是我的代码:

Dim i As Integer
Dim arr As Variant
Dim firstDay As Date
Dim MyMounth As Long
Dim initial_array As Variant
Dim lastDay As Date

MyMounth = 1
firstDay = DateSerial(Year(Date), MyMounth, 1)

lastDay = DateAdd("m", 1, firstDay) - 1

For i = 1 To lastDay - firstDay

    initial_array(i) = Format(firstDay + 1, "d mmmm yyyy")

Next i

ComboBox3.List = initial_array

我得到了一月的第一天和最后一天,因为MyMounth = 1

如何填充数组?

标签: excelvba

解决方案


您不会更改要放入数组的值,而是要Format(firstDay + 1, "d mmmm yyyy")多次放入数组中。这可能是您正在寻找的:

For i = 0 To lastDay - firstDay

    initial_array(i) = Format(firstDay + i + 1, "d mmmm yyyy")

Next i

此外,数组从 0 开始,因此您应该从索引 0 开始填充数组。

编辑:对不起,我完全错过了你的数组声明,试试这个更正的代码:

Dim i As Integer
Dim arr As Variant
Dim firstDay As Date
Dim MyMounth As Long
Dim initial_array As Variant
Dim lastDay As Date

MyMounth = 1
firstDay = DateSerial(Year(Date), MyMounth, 1)

lastDay = DateAdd("m", 1, firstDay) - 1

ReDim initial_array(lastDay - firstDay)
For i = 0 To lastDay - firstDay

  initial_array(i) = Format(firstDay + i, "d mmmm yyyy")

Next i

ComboBox3.List = initial_array

这会将包括firstDay和在内lastDay的每个值放入数组中。

编辑:说明:在用您的值填充数组之前,您需要将数组的长度设置为您的值的数量(因为数组从 0 开始,如果您想将 11 到 15 的数字放入其中,您的数组将看起来像这样(索引:值):0:11 - 1:12 - 2:13 - 3:14 - 4:15。所以你的数组长度为5,但最后一个索引是4)。该行ReDim initial_array(lastDay - firstDay)重新初始化长度为 的数组(lastDay - firstDay)

接下来,在使用循环遍历数组For并用值填充它时,您不仅需要增加数组索引,还需要增加值。表达式Format(firstDay + 1, "d mmmm yyyy")不会改变,因为firstDay永远不会改变。因此,每次我们增加i1 时,我们也会通过添加将您放入数组中的值增加 1 i


推荐阅读