gpt4 book ai didi

vba - 循环浏览选定的 Excel 工作表

转载 作者:行者123 更新时间:2023-12-04 21:54:42 27 4
gpt4 key购买 nike

在单个 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

最佳答案

您将 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,那么您不妨在循环浏览它们时实际使用每个 sh。

关于vba - 循环浏览选定的 Excel 工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47242969/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com