簡體   English   中英

使用For循環在具有有序名稱(如1,2,3,4)的多個工作表上運行宏

[英]Using a For Loop to run Macros on multiple sheets with ordered names like 1,2,3,4

我有一個創建宏,將數據從一個工作表中的數據從不同的工作簿 - >“數據”復制到當前工作簿 - >“測試”

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”。

我簡單地將您的兩個例程組合在一起,並對您的工作簿/工作表進行了限定。 假設該工作thisworkbooktest

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

iStart = 1
iEnd = 5
Set wb = Workbooks("data")

For i = iStart To iEnd

    Set wks = wb.Worksheets(cstr(i)) 'edited per Scott
    With wks
        .Range("A1").Select
        .Range(Selection, Selection.End(xlDown)).Select
        .Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
    End With

    ThisWorkbook.Range("A1").Select
    Selection.Paste

Next i

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM