【发布时间】:2017-11-11 21:28:04
【问题描述】:
在单个 Excel 工作簿中,我想选择各种工作表来运行 VBA 子例程。我找到了显示如何遍历选定工作表的代码,它使用“MsgBox sh.Name”;但是,当我将代码放入其中时,它只会影响所选的最后一张工作表。
例如,如果我选择 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
【问题讨论】:
-
您需要使用期间标识符限定您的范围。不,你在哪里使用
sh在循环中。