首页 > 解决方案 > 循环遍历 ListObject

问题描述

我无法使用 ListObjects 遍历我的表。

我有一个嵌套在 For Each 循环中的 If 循环中的 For 循环。我正在尝试根据相邻列中的值将数据添加到表中。我已经抛出了一些 Debug.print 语句来确定整个嵌套是否有效,但我无法让最后一个 For 循环运行。“Works2”将不会打印。VBA 显示所有变量的数据,我没有收到任何错误。

Public Sub StockDays()
Dim wb As Workbook
Dim ws As Worksheet
Dim loc As Range
Dim tbl As ListObject
Dim quarter, i, countrows As Integer

Set wb = Workbooks("DISTRIBUTOR REWORK DRAFT.xlsm")
Set ws = wb.ActiveSheet
Set loc = ws.Range("A1:C50").Find("Days of Stock") 'I use this further in the program

countrows = ws.ListObjects(1).Range.Rows.count
quarter = DatePart("q", Date)

For Each tbl In ws.ListObjects
    Debug.Print "Works"
    If Mid(tbl.Name, 5, 1) = quarter Then
        For i = 2 To countrows
            Debug.Print "Works2"
            ws.ListObjects("DFCREDPAR").DataBodyRange.Cells(i, ws.ListObjects("DFCREDPAR").ListColumns("Days of Stock").Index) = ws.ListObjects("DFCREDPAR").Range.Cells(i, 2) / tbl.Range.Cells(i, 3)
        Next i
    End If
Next tbl

For Each tbl In ws.ListObjects: Debug.Print tbl.Name & vbTab & tbl.HeaderRowRange.Address & vbTab & tbl.DataBodyRange.Address: Next

End Sub

我检查了所有数据类型并相信它们都是正确的(没有类型不匹配)。

任何帮助将不胜感激!

标签: vbadatetimelistobject

解决方案


推荐阅读