【问题标题】:Loop through particular worksheets in Excel and insert rows循环遍历 Excel 中的特定工作表并插入行
【发布时间】:2026-02-16 13:40:01
【问题描述】:

我想遍历 Excel Tab >>><<< Tab 中的特定工作表并插入新行并粘贴特殊值。

以下代码允许循环遍历所有工作表,但我不确定如何在特定工作表之间循环 - 即 For Each 选项卡仅在两个选项卡之间,不包括 - Tab >>><<< Tab

Sub WorksheetLoop2()
     ' Declare Current as a worksheet object variable.
     Dim Current As Worksheet

     ' Loop through all of the worksheets in the active workbook.
     For Each Current In Worksheets
        ' Insert new row here and paste special values
        ' This line displays the worksheet name in a message box.
        MsgBox Current.Name
     Next
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:
    Dim i As Long
    For i = ThisWorkbook.Worksheets("Tab >>>").Index + 1 To ThisWorkbook.Worksheets("<<< Tab").Index - 1
        With ThisWorkbook.Worksheets(i)
            MsgBox .Name
            .Rows(11).Insert, xlFormatFromLeftOrAbove
        End With
    Next
    

    【讨论】:

    • 谢谢。我怎样才能避免它只在活动工作表中运行? Sub EditSources() Dim i As Long For i = ThisWorkbook.Worksheets("FS Ann &gt;&gt;&gt;").Index + 1 To ThisWorkbook.Worksheets("&lt;&lt;&lt; FS Ann").Index - 1 MsgBox ThisWorkbook.Worksheets(i).Name Rows(11).Insert , xlFormatFromLeftOrAbove Next End Sub
    • 我在循环中插入了这一行 Rows(11).Insert , xlFormatFromLeftOrAbove,它仅在活动工作表中添加 4 行,而不是在所有工作表中添加 4 行
    • 不要在 cmets 部分发布代码,编辑问题并将其与结果描述一起添加到那里。
    • @OuenA 我拒绝了your edit,因为.Rows(11),unlinke Rows(11),已经合格了。
    【解决方案2】:
    Dim i As Long
    For i = ThisWorkbook.Worksheets("Tab >>>").Index + 1 To ThisWorkbook.Worksheets("<<< Tab").Index - 1
        MsgBox ThisWorkbook.Worksheets(i).Name
        ThisWorkbook.Worksheets(i).Rows(11).Insert , xlFormatFromLeftOrAbove
    Next
    

    【讨论】:

    • 如果工作簿中有图表,您的代码可能会失败。你不应该混用WorksheetsSheets,因为它们是两个不同的集合。此外,如果另一个工作簿处于活动状态,您的代码将失败。您应该限定工作表。执行以下操作:ThisWorkbook.Worksheets(i).Rows(11).Insert , xlFormatFromLeftOrAbove.