循环选定的Excel工作表

在一个Excel工作簿中,我想select各种工作表来运行VBA子例程。 我发现代码显示如何循环选定的工作表,它使用“ MsgBox sh.Name ”; 但是当我把我的代码放在里面的时候,它只影响到最后一张选中的表格。

例如,如果selectSheet1,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 

下面是我试图循环的代码。 如果它通过一个testing,它将把行添加到数据列表中。 代码一次只能处理一张表格。

 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 

您将Range对象默认为活动工作表(我推断这是您引用的“最后一个工作表”)。

 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,那么你也可以在每个循环中循环使用它们。