Excel VBA使用表和循环
创建VBA循环以重新调整Excel项目中所有表的大小 表名列表存储在“Tlist”命名范围中 如果表名被写入,这些代码都可以工作 该代码在这个循环中用于列计数,但在第二个引用x(re size)时,我得到一个错误“下标超出范围” 在调试时将鼠标悬停在第二个x上,Excel似乎正确地读取了它,但我无法让它重新调整表的大小—与列表对象函数不支持循环中的文本有关?或者我做这个循环是错误的,需要以不同的方式定义x吗?非常感谢您的帮助Excel VBA使用表和循环,excel,loops,resize,vba,Excel,Loops,Resize,Vba,创建VBA循环以重新调整Excel项目中所有表的大小 表名列表存储在“Tlist”命名范围中 如果表名被写入,这些代码都可以工作 该代码在这个循环中用于列计数,但在第二个引用x(re size)时,我得到一个错误“下标超出范围” 在调试时将鼠标悬停在第二个x上,Excel似乎正确地读取了它,但我无法让它重新调整表的大小—与列表对象函数不支持循环中的文本有关?或者我做这个循环是错误的,需要以不同的方式定义x吗?非常感谢您的帮助 Sub RSizeTables() Dim rr As
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
两个问题:1。您是否有意将表格调整为正好两行?2.Tlist是否包含工作表/工作簿中的所有表格或仅包含子集?Q1;是的,我有另一个删除数据的片段。我希望它们整洁——只有一排。是的,列表中有所有的表。那么下面的第一个代码就可以了-不需要
TList
。。。