Excel的Visual Basic来设置SourceRange

我得到一个运行时错误1004应用程序定义或对象定义的错误。 我在Excel中有一些VB,我试图让它select一个范围(可能可能会改变)..这是错误的

Set SourceRange = WorkBk.Sheets("Sheet8").Range("B14", Range("XFD14").End(XltoLeft).Offset(0,2)) 

需要能够使SourceRange的范围是B14(总是)到最后一个可用的单元格+右边的2(在这种情况下)

我有:

  Sub MergeData() Dim SourceRange as Range WorkBk As Workbook Dim DestRange as Range Dim FolderPath As String Dim FileName As String Dim NRow As Long FolderPath = Sheets("Sheet1").Range("D7") NRow = 4 FileName = DIR(FolderPath & "*.xlsb") Do While FileName <> "" Set WorkBk = Workbooks.Open(FolderPath & FileName) WorkBk.Application.Run _ "'" & FileName & "'!auto_open" Set SourceRange = WorkBk.Sheets("Sheet8").Range("B14", Range("XFD14").End(XltoLeft).Offset(0,2)) Set DestRange = Sheets("Sheet2").Range("B" & NRow) Set DestRange = DestRange.Resize(SourceRange.Rows.Count, _ SourceRange.Columns.Count) DestRange.Value = SourceRange.Value NRow = NRow + DestRange.Rows.Count WorkBk.Close savechanges:=False Loop 

不合格的Range("XFD14")...表示活动工作表上的单元格,不一定是您所期望的表单。

改成

 With WorkBk.Sheets("Sheet8") Set SourceRange = .Range("B14", .Range("XFD14").End(XltoLeft).Offset(0,2)) End With