【发布时间】:2019-07-29 20:32:28
【问题描述】:
我正在尝试运行红色圈出的循环,根据“mmm”给我“mm”。例如,如果我有“Jun”,我会得到“06”作为回报。一点都不花哨。我尝试以适当的范围“1 到 12”运行此代码,但总是得到“运行时错误‘9’:下标超出范围”,因此我尝试将范围降低到“1 到 11”。当我这样做时,我没有得到任何错误,但我也没有得到任何结果。什么都没有发生!
如果您在我收到错误时查看手表,我实际上会得到我需要的答案,但只是错误使我无法获得这些答案。有什么我想念的吗?为什么会这样。如果可以的话,我是否应该找到一种方法来抑制运行时错误?
我已经三次检查了数组的大小,它们都是 12。
Option Explicit
Dim mmmonth() As Variant
Dim MM() As Variant
Dim ii As Long
Dim thismo As String
Dim thismon As String
Sub Shift1JuneReportMonthly()
thismon = Mid(fileno, 5, 3)
mmmonth = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
MM = Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
For ii = 1 To 12
If mmmonth(ii) = thismon Then
thismo = MM(ii)
End If
Next ii
End Sub
在我的手表中,即使出现错误,我也会在我的手表中看到预期的正确结果:mmmonth(ii)=12,并且 thismo ="06"。但是,当我将索引设置为 1 到 11 时,代码不会引发错误,但所有手表都只会说“”。
【问题讨论】:
-
试试
For ii = 0 To 11 -
不确定
fileno等于什么,但如果它是任何可识别日期格式的String,您可以使用thismo = Month(DateValue(fileno)) -
嗨@cybernetic.nomad,我试过ii = 0到11。错误消失了,但代码什么也没做。
标签: excel vba loops for-loop time