excel - 如何用月份的日期填充数组?
问题描述
我想用值填充一个数组,然后用数组的值填充一个组合框。
这是我的代码:
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
。
如何填充数组?
解决方案
您不会更改要放入数组的值,而是要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
永远不会改变。因此,每次我们增加i
1 时,我们也会通过添加将您放入数组中的值增加 1 i
。
推荐阅读
- javascript - 将表单数据从 Angular 6 发送到 PHP
- python - 通过特定多项式拟合 Python 曲线
- node.js - react-router-dom 未安装在命令提示符下
- ios - 基于 TableView 选择隐藏 UILabel
- c# - MissingReferenceException:“攻击者”类型的对象已被破坏,但您仍在尝试访问它
- c# - Wpf ItemsControl 元素不会更改 ObservableCollection 值更改 MVVM 上的可见性
- javascript - 将 CSS :active 转换为 Javascript .onclick
- php - 使用 PHPMailer 在 PHP 中使用 SMTP 发送电子邮件
- c# - svcutil 无法为自托管 wcf 服务生成接口
- android - 约束布局和滚动视图不起作用