我已经看过很多关于此的帖子,但似乎都没有直接解决我想要做的事情(以我至少理解的方式)。
我正在寻找迭代我的各种工作表并将每张工作表中的数据格式化为表格;看似非常简单,但我正在努力将表格存储到一个数组中,以便通过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
答案 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