子工作表/列表对象

时间:2018-08-20 00:38:59

标签: excel vba

有没有一种方法可以使工作表或列表对象组在执行循环功能时可以调用?因此,例如,我想在一些表格上运行一些代码,这些表格存在于更大的excel文件中的几个工作表上。目前,我使用以下代码:

Dim sht As Worksheet
Dim lstobj As ListObject

For Each sht In ThisWorkbook.Worksheets
    For Each lstobj In sht.ListObjects
        Blah blah blah
    Next lstobj
Next sht

但是,我实际上只需要代码即可遍历3个工作表上存在的5或6个表,因此遍历每个工作表和列表对象是浪费时间,最终在我不想运行时会给我带来麻烦一些对象上的代码。我可以创建一个工作表子组和一个表子组来运行代码,还是必须分别调用每个子表?

1 个答案:

答案 0 :(得分:0)

如果已指定/命名对象,则可以在数组中分配它们并在它们之间循环。

这是一个使用4张Excel电子表格执行此操作的示例,但是循环仅遍历其中3张(1、2和4)。

Dim worksheets(2) As Excel.Worksheet
Set worksheets(0) = ThisWorkbook.Sheets(1)
Set worksheets(1) = ThisWorkbook.Sheets(2)
Set worksheets(2) = ThisWorkbook.Sheets(4)

Dim worksheetVar As Variant ' Excel.Worksheet
For Each worksheetVar In worksheets
    MsgBox worksheetVar.Name

    If worksheetVar.ListObjects.Count > 0 Then  
        MsgBox "Has List Objects"
    End If
Next