繁体   English   中英

VBA循环仅通过一张纸

[英]VBA loop only going through one sheet

我创建了一个函数,该函数从工作簿中的所有工作表中返回特定范围内的值的总和,并将其与标量相乘。 For循环旨在通过sheet Count属性到达书中的最后一页,但我将其减少为2张以帮助我找出问题所在。

就目前而言,For循环在一次迭代后退出,我无法从查看代码中找出原因。 Do循环正在解决,请多多帮助!

Public Function FPP_Total()

Dim Book As Workbook: Set Book = ActiveWorkbook
Dim sheetCount As Integer: sheetCount = Book.Sheets.Count
Dim total As Long
Dim rowCount As Integer
Dim currentSheet As Worksheet

rowCount = 2

For i = 3 To 5

    Set currentSheet = Book.Sheets(i)

    Do

    total= (total+ currentSheet.Cells(rowCount, 3).Value)
    rowCount = rowCount + 1

    Loop Until IsEmpty(currentSheet.Cells(rowCount, 1).Value)

Next

FPP_Total = total * 5

结束功能

看来您正在尝试将C2每张图纸C2到该列的最后一行。

无需创建嵌套循环( @TheJeebo将其标识为问题的根源 ),您可以简单地确定所讨论的动态范围并一次将所有范围相加,如下所示。 将其嵌套在工作表循环中以获得所需结果


Public Function FPP_Total()

Dim ws As Worksheet         'Worksheet
Dim lr As Long              'Last Row
Dim total As Long
Dim i as Long

For i = 3 To ThisWorkbook.Sheets.Count
    Set ws = ThisWorkbook.Sheets(i)
    lr = ws.Range("C" & ws.Rows.Count).End(xlUp).Row
    total = Application.WorksheetFunction.Sum(ws.Range("C2:C" & lr))
Next i

FPP_Total = total * 5

End Function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM