循环选定的Excel工作表

时间:2017-11-11 21:28:04

标签: excel vba excel-vba

在单个Excel工作簿中,我想选择各种工作表来运行VBA子例程。我发现代码显示如何循环选定的工作表,它使用" MsgBox sh.Name&#34 ;;但是当我将代码放入其中时,它只影响最后选择的工作表。

例如,如果我选择Sheet1,Sheet2和Sheet3(按此顺序),它将只对Sheet3进行更改。下面是我的代码的简化示例。我只能选择最后一张表格" 123"分配给单元格A1。

Sub SimplifiedExample()

    Dim sh As Worksheet
    Dim selectedshs As Object
    Set selectedshs = ActiveWindow.SelectedSheets
    For Each sh In selectedshs
        'MsgBox sh.Name
         Range("A1") = 123
    Next sh

End Sub

以下是我试图循环的代码。如果通过测试,它会将行添加到数据列表中。该代码一次只能用于一张纸。

Sub LoopingWorksheets()

    Dim sh As Worksheet
    Dim selectedshs As Object

    Set selectedshs = ActiveWindow.SelectedSheets

    For Each sh In selectedshs

        Do While Application.WorksheetFunction.Max(Range("A:A")) < Range("Z2")

            ActiveSheet.Range("A50000").Select
            Selection.End(xlUp).Select
            Selection.EntireRow.Insert
            ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
            Selection.Copy
            ActiveCell.Offset(1, 0).Range("A1:A2").Select
            ActiveSheet.Paste
            Application.CutCopyMode = False
            Range("A1").Select

        Loop

    Next sh

End Sub

1 个答案:

答案 0 :(得分:3)

您将Range对象默认为活动工作表(我推断的是最后一页&#39;您所指的)。

Dim sh As Worksheet
Dim selectedshs As Object
Set selectedshs = ActiveWindow.SelectedSheets
For Each sh In selectedshs
    with sh
        debug.print .Name
        .Range("A1") = 123
    end with
Next sh

如果您要循环浏览ActiveWindow.SelectedSheets,那么您可以在循环浏览时实际使用每个 sh