如何遍历表中的工作表列表?

问题描述 投票:0回答:1

我有200个工作表(名称为1,2,3等),我需要循环并将每个数据的不同范围复制并粘贴到主工作表中。我怎样才能做到这一点?

我有一个VB编辑器中的数组中的所有工作表的列表,并试图循环它。我在另一个工作表的表中有一个工作表名称列表,并尝试循环它。

有人可以提供一个简单的例子来说明如何完成其​​中一种方法吗?

示例代码如下所示。

Dim i As Integer
i = 11
Dim SheetList As String
Dim element As Variant
SheetList = Array("Sheet24", "Sheet25")

'Simplified example of Do While loop being used
Do While Sheet1.Cells(i, 2).Value <> ""
    For Each element In SheetList
        If element.Range("C3") = "" Then
            GoTo Next Iteration
        Else
            'copy and paste data in master worksheet
        End If
NextIteration:

    i = i +1
    Next element
Loop

预期结果:要复制并粘贴到主工作表上的一个组合范围内的多个工作表中的数据范围。

excel vba loops worksheet
1个回答
1
投票

您可以使用以下命令轻松遍历工作簿中的所有工作表,而无需使用其名称:

Dim sht As Worksheet
For Each sht In ThisWorkbook.Worksheets

    'do something
Next sht

如果您需要复制的范围在每个工作表中都不同,那么您可以搜索要复制的列的标题,例如,获取所需的范围并将其内容粘贴到主工作表中。

如果您要使用特定工作表,那么您仍然可以循环遍历所有工作表并检查特定工作表是否存在某些条件,如下所示:

For Each sht In ThisWorkbook.Worksheets
    If sht.Name = "something" Then
        'do something
    End If
    If Condition Then
        'do something
    End If
Next sht

例如,您要从中复制某些数据的工作表可以具有分配给它的特定值的“标记”单元格,例如TRUE1。代码将检查此单元格的内容并采取相应措施。

现在,如果你想通过不循环遍历所有工作表来节省时间(这不应该花费太多时间..)并且为了避免检查每个工作表的条件,那么你可以创建一个自定义collection的工作表,仅包含你感兴趣的那些床单。

Dim sht As Worksheet
Dim shtcol As New Collection
shtcol.Add ThisWorkbook.Worksheets(1)
shtcol.Add ThisWorkbook.Worksheets(2)
shtcol.Add ThisWorkbook.Worksheets(3)
For Each sht In shtcol
    'do something
Next sht
© www.soinside.com 2019 - 2024. All rights reserved.