0

我正在尝试将工作簿所有工作表中的多个格式化表格合并到一个主表格中。

我有以下 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).Select 行出现运行时 1004 错误。

我认为我的问题是如果不先选择工作表就无法选择范围,因此是“sht.Activate”行。唉,没有运气。

然后我想可能是因为 tbl 是一个列表对象,所以类型错误,所以我尝试使用一个临时字符串变量并将 tbl.name 保存到第一个并在 range(tempvariable).select 中使用它 唉,不走运。

我还尝试对表的名称进行硬编码:range("tablename").select,但这也不起作用......

我知道这很简单,但我被挂了,所以有人可以解释我错过了什么吗?

4

1 回答 1

2

我通常会ListObject通过以下方式引用表格:

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
于 2015-07-01T09:37:58.723 回答