Как продолжать считать после 4 рядов? - PullRequest
0 голосов
/ 13 июня 2019

Мне предоставили некоторый код, который сделал парень, которого больше нет в наличии.скажем, у вас есть таблица с пятью столбцами.первые четыре столбца заполняются запросом, который работает нормально, затем есть этот фрагмент кода, который завершает пятый столбец.Когда я запускаю его, он выводит меня «Индекс вне диапазона (Ошибка 9)», когда он идет для пятой строки и ниже.1,2,3 и 4 работают нормально.Любая помощь будет отличной!Ошибка высвечивается в строке над первой «для»

    Function HorasSemana() As Double
        Dim sumaHoras As Double
        Dim lRow As Integer
        Dim semanas(1 To 4) As Integer

        lRow = DatosOmnia.Cells(Rows.Count, 1).End(xlUp).Row

        For i = 2 To lRow
            semanas(i - 1) = WorksheetFunction.WeekNum(DatosOmnia.Cells(i, "C"), vbMonday)
            'MsgBox WorksheetFunction.WeekNum(DatosOmnia.Cells(i, "C"), vbMonday)
        Next i

        'lRow toma el valor con respecto a la hoja "Horas Semanales"
        lRow = Worksheets("Horas Semanales").Cells(Rows.Count, 1).End(xlUp).Row
        For i = 1 To sizeOf(semanas) '(UBound(semanas, 1) - LBound(semanas, 1) + 1)
            sumaHoras = 0
            For j = 2 To lRow
                If WorksheetFunction.WeekNum(Worksheets("Horas Semanales").Cells(j, "B"), vbMonday) = semanas(i) Then
                    sumaHoras = sumaHoras + Worksheets("Horas Semanales").Cells(j, "C").Value
                    DatosOmnia.Cells(i + 1, "F") = sumaHoras
                End If
            Next j
        Next i
        HorasSemana = sumaHoras
End Function

1 Ответ

0 голосов
/ 13 июня 2019

Вы можете изменить размер массива в соответствии с lRow:

    Dim lRow As Long
    Dim semanas() As Long

    lRow = DatosOmnia.Cells(Rows.Count, 1).End(xlUp).Row
    ReDim semanas(1 to lRow-1)

Обычно Long предпочтительнее, чем Integer - это не "дороже" дороже и безопаснее, если ваши данные растутбольше

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