范围声明从一个工作簿复制并粘贴到另一个

我想从一个工作簿中复制值并将其粘贴到主工作簿中。

该线

Set DestRange = DIAAggregation.Range(1 & NRow) 

停止debugging器,并给我错误消息:

对象“_workbook”的方法“范围”失败

在网上查询时,我知道我并不完全符合我的范围,但我不明白我能做些什么才能完全符合资格。

代码在下面,有问题的线是最后一行。

 Sub DIA_Concatenate() ' ' ' ' Dim DIAAggregation As Worksheet Dim DIAMaster As Workbook Dim FolderPath As String Dim NRow As Long Dim FileName As String Dim WorkBk As Workbook Dim SourceRange As Range Dim DestRange As Range Dim Month As String Dim Year As String ' Prompts the user to specify which DIA data ' is being aggregated (Month and Year). ' Useful for checking data source and SaveAs file name. Month = InputBox("What month's data is being aggregated?") Year = InputBox("What year's data is being aggregated?") ' Points the macro to the proper data source ' (UPDATE THIS LINE TO YOUR DATA SOURCE!!!) FolderPath = _ "G:\Analytical Services\General Team Folders\Kyle\DIA Aggregation Bank\" ' Opens the master workbook that is to have data added to it, ' and declares the first sheet for the macro. Set DIAMaster = Workbooks.Open(FolderPath & "*Aggregation*") Set DIAAggregation = DIAMaster.Worksheets(1) ' Incrementer to keep track of where new rows should be appended. NRow = DIAAggregation.Rows.Count + 1 Dim LastRow As Long ' Call Dir the first time, ' pointing it to all Excel files in the folder path. FileName = Dir(FolderPath & "*.xl*") ' Loop until all .xl files in the source folder have been read. Do While FileName <> "" If InStr(1, FileName, "Aggregation") > 0 Then FileName = Dir() GoTo Jump End If If InStr(1, FileName, Month) = 0 Then FileName = Dir() GoTo Jump End If ' Open a workbook in the folder. Set WorkBk = Workbooks.Open(FolderPath & FileName) Dim J As Integer ' Loop through data sheets to collect data. For J = 2 To Sheets.Count ' From sheet 2 to last sheet. ' Make the sheet active, find where the data is, ' and select the data. Sheets(J).Activate LastRow = WorkBk.Worksheets(J).Cells.Find(What:="*", _ After:=WorkBk.Worksheets(J).Cells.Range("A1"), _ SearchDirection:=xlPrevious, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows).Row Set SourceRange = WorkBk.Worksheets(J).Range("A3:E" & LastRow) ' Set the destination range to start at column A and ' be the same size as the source range. Set DestRange = DIAAggregation.Range(1 & NRow) 

根据最后的评论,通过在电子表格variables和.Rows之间添加.UsedRange来更改NRow的声明,可以解决PartyHatPanda指出的问题。