这是我的第一篇文章。我已经使用VBA一个月了,我正在尝试使用基于用户定义范围的日期填充数组。例如,用户将输入:05/01/2001-05/21/2001。在那里,因为我试图用从开始到结束的所有天数填充数组,所以在此示例中将是21个日期。当我打印出数组时,我只会得到奇数天,而不是偶数天。有人能帮忙吗?谢谢!
我正在使用DateDiff()函数来获取开始日期和结束日期之间的天数,以确定必须包含在数组内部的日期数。
temp_csv_file_count是数组内的值的数量,input_start_date和input_end_date是字符串,忽略状态,这与其他事情有关。
temp_csv_file_count = DateDiff("d", input_start_date, input_end_date)
temp_csv_file_count = temp_csv_file_count + 1
Dim temp_date() As String
ReDim temp_date(0 To temp_csv_file_count) As String
Dim i As Integer
For i = 0 To temp_csv_file_count
temp_date(i) = DateAdd("d", i, input_start_date)
i = i + 1
Next i
msg = "File Count: " & temp_csv_file_count & ", State: " & temp_state
MsgBox msg
Dim array_contents As String
Dim j As Integer
For j = 0 To temp_csv_file_count
array_contents = array_contents + temp_date(j) + vbNewLine
Next j
MsgBox "the values of my dynamic array are: " & vbNewLine & array_contents
实际: 2001年5月1日, 2001年5月3日, 2001年5月5日, 2001年5月7日, 2001年5月9日, 2001年5月11日, 2001年5月13日, 2001年5月15日, 2001年5月17日, 2001年5月19日, 2001年5月21日
答案 0 :(得分:1)
For i = 0 To temp_csv_file_count
temp_date(i) = DateAdd("d", i, input_start_date)
'i = i + 1 'THIS IS WHY
Next i
一个for循环将一次迭代1,除非在Step
中指定(您没有列出该步骤,因此它假定为1),您告诉它在循环本身进行迭代之前加1(通过Next i
)。
For i = 0 To temp_csv_file_count Step 1 'added the step to ensure it is understood
temp_date(i) = DateAdd("d", i, input_start_date)
Next i
答案 1 :(得分:0)
For-each loop
每次通过其自身将i
的值增加一个(如果不更改的话)。没有理由使用i = i + 1
。
有关更多详细信息:
i
的值增加2 ,则可以使用Step 2
:示例:
For i = 0 To temp_csv_file_count Step 2
temp_date(i) = DateAdd("d", i, input_start_date)
Next i
示例:
For i = temp_csv_file_count To 0 Step -1
temp_date(i) = DateAdd("d", i, input_start_date)
Next i