gpt4 book ai didi

vba - 使用 For 循环在多个工作表上运行具有 1、2、3、4 等有序名称的宏

转载 作者:行者123 更新时间:2023-12-04 22:01:53 26 4
gpt4 key购买 nike

我创建了一个宏,可以将工作表中的数据从不同的工作簿->“数据”复制到当前工作簿->“测试”

Sub copy_data()

Windows("data.xlsx").Activate
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Windows("test.xlsm").Activate
Range("A1").Select
ActiveSheet.Paste
End Sub

我想让这个宏运行在“数据”工作簿中的多个工作表上。

我相信循环应该是有效的,因为工作表名称是 1、2、3、4、5。所以我正在考虑制作一个 for 循环,但我真的卡住了。

到目前为止我所做的如下所示:
Sub Loopsheets()
Dim wks As Worksheet
Dim i As Integer
Dim iStart As Integer
Dim iEnd As Integer

iStart = 1
iEnd = 5

If iStart > 0 And iEnd > 0 And iEnd > iStart Then
For i = iStart To iEnd
Set wks = ThisWorkbook.Worksheets(i)
Application.run "copy_data"
Next i
End If
End Sub

最佳答案

这是未经测试的,但应该可以工作:

Sub copy_data(ws As Worksheet)

Dim dwb As Workbook
Dim dws As Worksheet

Set dwb = Workbooks("data.xlsx")
Set dws = dwb.Worksheets(1)

With dws
.Range(.Cells(1, 1), .Cells(1, 1).End(xlDown).End(xlToRight)).copy ws.Range("A1")
End With

End Sub



Sub Loopsheets()
Dim wks As Worksheet
Dim i As Integer
Dim iStart As Integer
Dim iEnd As Integer

iStart = 1
iEnd = 5

If iStart > 0 And iEnd > 0 And iEnd > iStart Then
For i = iStart To iEnd
Set wks = ThisWorkbook.Worksheets(CStr(i))
copy_data wks
Next i
End If
End Sub

工作表的名称是一个字符串,通过使用整数,它将调用第一个工作表而不是名为“1”的工作表。因此将其更改为 cstr(i) 会将 1 更改为“1”。

关于vba - 使用 For 循环在多个工作表上运行具有 1、2、3、4 等有序名称的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33349373/

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