VBA使用表和循环

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

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

如果写入表名,此代码全部有效。

代码工作在这个循环的列数,但在第二个引用的重新大小,我得到一个错误'下标超出范围'

将鼠标hover在debugging的第二个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 

这段代码将把所有表的大小调整为两行:

 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