我正在尝试将工作簿的所有工作表中的多个格式化表合并到一个主表中。
我有以下VBA来循环所有工作表和表格:
Sub GatherTables()
Dim tbl As ListObject
Dim sht As Worksheet
For Each sht In ThisWorkbook.Worksheets
sht.Activate
If sht.Name = "Summary" Or sht.Name = "Consolidated" Then
'do nothing
Else
For Each tbl In sht.ListObjects
Range(tbl.Name).Select
Selection.Copy
'do something with it
Next tbl
End If
Next sht
End Sub
当我运行该代码时,在Range(tbl.Name)行。选择我得到运行时1004错误。
我认为我的问题是在没有先选择纸张的情况下我无法选择范围,因此行“sht.Activate”。唉,没有运气。
然后我认为可能因为tbl是一个listobject,类型是错误的,所以我尝试使用临时字符串变量并将tbl.name保存到第一个并在范围内使用它(tempvariable)。选择唉,不运气。我也尝试过对表格的名称进行硬编码:范围(“tablename”)。选择,但这也不起作用......
我知道它的一些简单但我挂了所以有人可以解释我错过的东西吗?
答案 0 :(得分:2)
我通常会以下列方式引用Sub GatherTables()
Dim tbl As ListObject
Dim sht As Worksheet
For Each sht In ThisWorkbook.Worksheets
sht.Activate
If sht.Name = "Summary" Or sht.Name = "Consolidated" Then
'do nothing
Else
For Each tbl In sht.ListObjects
ActiveSheet.ListObjects(tbl.Name).Range.Select
Selection.Copy
'do something with it
Next tbl
End If
Next sht
End Sub
表:
MethodInfo