从存储的数组中迭代多个工作表

时间:2016-08-11 12:35:21

标签: arrays excel vba excel-vba

我已经看过很多关于此的帖子,但似乎都没有直接解决我想要做的事情(以我至少理解的方式)。

我正在寻找迭代我的各种工作表并将每张工作表中的数据格式化为表格;看似非常简单,但我正在努力将表格存储到一个数组中,以便通过for循环轻松迭代。

我从主要传递formatSheetsArray,其中存储了以下数据:formatTablesArray = Array(lo.Name, wa.Name, sevenA.Name, oh.Name, at.Name, ob.Name, ra.Name, cvr.Name, ln.Name)

这些表已经更改了代码名称以便于操作,但现在我很困惑我应该如何从数组的角度迭代它们。工作簿中还有其他工作表,因此我无法使用sheets.count并且我尝试使用For Each Worksheet In formatSheetArray并且我收到了我现在收到的相同错误,这是错误424对象所需。有什么想法吗?

Private Sub FormatOiTables(ByVal formatSheetsArray As Variant, ByRef cmeBook As Workbook)

    Dim loopCounter As Integer, lastRow As Integer


    For loopCounter = 0 To UBound(formatSheetsArray)

        lastRow = cmeBook.Sheets(formatSheetsArray(loopCounter)).Cells(formatSheetsArray(loopCounter).Rows.Count, "A").End(xlUp).Row

    Next


End Sub

2 个答案:

答案 0 :(得分:0)

您可以制作和使用工作表对象数组:

formatTablesArray = Array(lo, wa, sevenA....)

然后再做

for each tbl in formaTablesArray
    tbl.
next

答案 1 :(得分:0)

我刚刚解决上述问题的解决方案。正如@Siddhart所指出的那样,我的cmeDataBook工作簿中输入了一个拼写错误,该工作簿最初输入为cmeBook。谢谢大家!

Private Sub FormatOiTables(ByVal formatSheetsArray As Variant, ByRef cmeDataBook As Workbook)

    Dim WshtNameCrnt As Variant
    Dim lastRow As Integer

    For Each WshtNameCrnt In formatSheetsArray

        cmeDataBook.Sheets(WshtNameCrnt).Activate

        With Worksheets(WshtNameCrnt)

            lastRow = .Cells(Worksheets(WshtNameCrnt).Rows.Count, "A").End(xlUp).Row

        End With

        MsgBox (lastRow & " " & WshtNameCrnt)

    Next WshtNameCrnt


End Sub