0

创建一个 VBA 循环以重新调整 Excel 项目中所有表的大小。

表名列表存储在“Tlist”命名范围中

如果写入表名,则此代码所有工作。

代码在此循环中用于列计数,但在 x 的第二次引用(重新调整大小)时,出现“下标超出范围”的错误

将鼠标悬停在调试的第二个 x 上,Excel 似乎正确读取它,但我无法让它重新调整表格大小与列表对象函数不支持循环中的文本有关吗?还是我做错了这个循环并且需要以不同的方式定义 x ?非常感谢任何帮助。

    Sub RSizeTables()
    Dim rr As Integer
    Dim cc As Integer
    Dim x As Range
    Dim £Table As Range

    Set £Table = Range("Tlist")

    For Each x In £Table

    rr = 2
    cc = Range(x).Columns.Count

    With Sheets("Data").ListObjects(x)
    .Resize .Range.Resize(rr, cc)

    End With

    Next x


End Sub
4

1 回答 1

2

此代码会将所有表的大小调整为两行:

Sub ResizeAll()
    Dim ws As Worksheet
    Dim lo As ListObject

    'If you only have tables in one sheet, use this
    Set ws = Sheets("Data")

    'Else this:
    'For Each ws in Sheets
    For Each lo In ws.ListObjects
        lo.Resize lo.Range.Resize(2)
    Next lo
    'Next ws
End Sub

如果您只需要循环 中的表TList,这将完成这项工作:

Sub ResizeTList()
    Dim varTableName As Variant

    For Each varTableName In Range("TList")
        With Sheets("Data").ListObjects(varTableName)
            .Resize .Range.Resize(2)
        End With
    Next varTableName
End Sub
于 2013-03-05T11:21:01.630 回答