首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在4行后继续计数?

如何在4行后继续计数?
EN

Stack Overflow用户
提问于 2019-06-13 05:30:03
回答 1查看 44关注 0票数 0

我得到了一些代码,是一个不再有空的人做的。假设您有一个包含五列的表。前四列被一个运行良好的查询填充,然后是完成第五列的这段代码。当我运行它时,当它运行到第五行及以下时,它会得到"Subscript out out of range (Error 9)“。1、2、3和4工作正常。任何帮助都是最好的!错误突出显示在第一个"for“上的行上。

代码语言:javascript
复制
    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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-13 07:29:34

您可以根据lRow调整数组的大小

代码语言:javascript
复制
    Dim lRow As Long
    Dim semanas() As Long

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

通常情况下,LongInteger更可取--它的“成本”不会更高,而且如果您的数据变得更大,它会更安全

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56570621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档