Excel 获取数组中最近6个月的名称
要在数组mon中获取最近6个月的名称列表,但在第行中获取错误,因为下标超出范围Excel 获取数组中最近6个月的名称,excel,vba,Excel,Vba,要在数组mon中获取最近6个月的名称列表,但在第行中获取错误,因为下标超出范围 mon(X) = val 如果知道我错在哪里,输出应该是这样的 mon = ("DecWK1","DecWK2","DecWK3","DecWK4","Dec","JanWK1","JanWK2","JanWK3","JanWK4","Jan",.......) 主代码 Sub ColorRows() Dim mon() As Variant, MonthName() As Variant, X As Long
mon(X) = val
如果知道我错在哪里,输出应该是这样的
mon = ("DecWK1","DecWK2","DecWK3","DecWK4","Dec","JanWK1","JanWK2","JanWK3","JanWK4","Jan",.......)
主代码
Sub ColorRows()
Dim mon() As Variant, MonthName() As Variant, X As Long
Dim val As String
X = 0
ReDim Preserve mon(X)
MonthName = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
Dim monName As String
For i = -6 To 0
' MsgBox i
monName = Format(DateAdd("M", i, Now), "MMMM")
' MsgBox sMonth_Name
For Each element In MonthName
ReDim Preserve mon(0 To X)
If InStr(monName, element) Then
For j = 1 To 4
val = element & "WK" & j
mon(X) = val
X = X + 1
Next j
mon(X) = element
X = X + 1
End If
Next element
Next i
End Sub
当您
ReDim
阵列时,您没有考虑要添加的新元素
写:
ReDim Preserve mon(0 To X + 4)
相反。您确实知道
MonthName()
是Access中的内置函数,是吗?不是,很抱歉,在不扩展mon
数组的情况下增加了X
的内部循环,这就解释了错误。但是你的代码有几个问题。你是否假设一个月总是4周?是的,月份总是4周,因为“X”是经过校正的,我们在“mon(X)”上使用“X”,所以“mon”不是也在递增吗?如果你已经知道数组总是有6*5个元素,为什么不用30个元素来调暗它呢?谢谢,这很好