我得到一个数组的空白消息框,它应该自动拥有并显示以下值:
00:00:00
01:00:00
02:00:00等...
这是我的代码
Dim i As Integer
i = 0
Dim sampleArr(0 To 24) As Variant
Dim a As Integer
a = 0
Do Until i > 23
sampleArr(a) = i & ":00:00"
a = a + 1
i = i + 1
MsgBox sampleArr(a)
Loop
请告诉我这段代码有什么问题
在增加Msgbox
和a
之前先放置i
。
MsgBox sampleArr(a)
a = a + 1
i = i + 1
你更新sampleArr(a)
的值,然后增加a
。因此,要获得刚刚更新的值,您需要使用预先递增的值:a-1
。
MsgBox sampleArr(a-1)
你在这里尝试实现的目标并不完全清楚(特别是a
和i
完全相同。据推测,msgbox实际上只是在那里证明你已经正确地创建了数组并将在以后删除?
也就是说,正如每个人都指出的那样,你在显示条目之前递增指针。解决这个问题的最简单方法是在创建元素后立即将显示行放入。
我还格式化了i
,以便生成您所要求的确切输出。
另外,我怀疑你的阵列只需要去0 To 23
,如果这是某种时间选择器?
因此,修复您的问题如下:
Dim i As Integer
i = 0
Dim sampleArr(0 To 23) As Variant
Dim a As Integer
a = 0
Do Until i > 23
sampleArr(a) = Format(i, "00") & ":00:00"
MsgBox sampleArr(a)
a = a + 1
i = i + 1
Loop
但是,您可以执行以下操作:
Dim i As Integer
Dim sampleArr(0 To 23) As Variant
For i = 0 To 23
sampleArr(a) = Format(i, "00") & ":00:00"
MsgBox sampleArr(a)
Next
除此之外,如果要将数组中的值存储为TIME而不是时间的文本表示(对计算等有用),则将sampleArr
行替换为
sampleArr(a) = TimeSerial(i, 0, 0)