Получить имя за последние 6 месяцев в массиве - PullRequest
1 голос
/ 16 июня 2020

Хотите получить список имени за последние 6 месяцев в массиве mon, но получите ошибку как нижний индекс вне допустимого диапазона в строке

mon(X) = val

Любая идея, где я ошибаюсь, вывод shoule будет как

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

1 Ответ

1 голос
/ 16 июня 2020

Когда вы ReDim свой массив, вы не учитываете новые элементы, которые нужно добавить.

Напишите:

 ReDim Preserve mon(0 To X + 4)

.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...