Vba 如何从每个工作表中获取此循环?
我从每个工作表中获取A-K列中的数据,并将其放入单个工作表中。目前我的代码正确地抓取了第一张纸,但之后就什么也得不到了。我真的不知道为什么 以下是我目前的代码:Vba 如何从每个工作表中获取此循环?,vba,excel,Vba,Excel,我从每个工作表中获取A-K列中的数据,并将其放入单个工作表中。目前我的代码正确地抓取了第一张纸,但之后就什么也得不到了。我真的不知道为什么 以下是我目前的代码: Sub compile() Dim srcRange, destRange As Range Dim wkSheet As Worksheet Dim wksheet_number, lastRow As Long wksheet_number = 1 For Each wkSheet In ThisWorkbook.Worksh
Sub compile()
Dim srcRange, destRange As Range
Dim wkSheet As Worksheet
Dim wksheet_number, lastRow As Long
wksheet_number = 1
For Each wkSheet In ThisWorkbook.Worksheets
If wksheet_number > 1 Then
lastRow = ThisWorkbook.Worksheets(wksheet_number).Cells(Rows.Count, "A").End(xlUp).Row
Set srcRange = ThisWorkbook.Worksheets(wksheet_number).Range("A2:K" & lastRow)
Set destRange = ThisWorkbook.Worksheets(1).Range("A2")
If destRange.Value = "" Then
srcRange.copy destRange
Else
Set destRange = srcRange.End(xlDown)
Set destRange = srcRange.Offset(1, 0)
'destRange.Select
srcRange.copy destRange
End If
wksheet_number = wksheet_number + 1
Else
wksheet_number = wksheet_number + 1
End If
Next wkSheet
End Sub
抱歉没有评论,这是我下次可能应该补充的内容。有人知道我哪里出错了吗?您需要对代码进行以下更正:
Set destRange = destRange.End(xlDown)
Set destRange = destRange.Offset(1, 0)
您所指的是
srcRange
,而不是destRange
,因此它只是复制了相同的范围(在其他工作表中)。我同意@Andy G。下面是您的过程的另一个简短版本。由于您在工作簿中循环浏览每个工作表,因此不需要使用wksheet\u number
变量。您可以在循环的每次迭代中直接使用wkSheet
对象
Sub compile()
Dim srcRange, destRange As Range
Dim wkSheet, sheetDestination As Worksheet
Dim columnCount, lastRow As Long
rowCount = 2 'Starting at A2
Set sheetDestination = ThisWorkbook.Worksheets(1) 'Also could use the name like ThisWorkbook.Worksheets("MyReport")
For Each wkSheet In ThisWorkbook.Worksheets
If Not wkSheet = sheetDestination Then
lastRow = wkSheet.Cells(Rows.Count, "A").End(xlUp).Row
Set srcRange = wkSheet.Range("A2:K" & lastRow)
Set destRange = sheetDestination.Range("A" & rowCount)
srcRange.Copy destRange
rowCount = rowCount + lastRow + 1
End If
Next wkSheet
End Sub
我觉得自己像个傻瓜。。。谢谢你,安德伍德;)别担心,这是一个很容易犯的错误,并且很难发现它何时不会导致错误。我首先尝试了这个,它给了我一些问题,但当时我忘了在“ThisWorkBook”上添加.worksheet。不过这肯定更干净。谢谢