错误1004使用范围单元格时

我正面临运行时错误1004与这段代码。 这很奇怪,因为这个代码在另一个模块中工作,但是当我把它放在一个用户表单中时,它不起作用。

使用断点时,我发现这一行发生了问题

Set SourceRange = WorkBk.Worksheets(1).Range(Cells(FindRow + 2, FindCol), Cells(LastRow, FindCol)) 

我已经研究和尝试了一切

 Set SourceRange = WorkBk.Worksheets(1).Range(Cells(FindRow + 2, FindCol)).Resize(LastRow) Set SourceRange = WorkBk.Worksheets(1).Range(Cells(FindRow + 2, FindCol)).Resize(LastRow, LastCol) With WorkBk.Worksheets(1) .Range(.Cells(FindRow + 2, FindCol), .Cells(FindRow + 2, FindCol)) End With 

而没有人似乎工作。 此代码再次在另一个模块上工作。 我不知道为什么当我放在用户窗体的命令button子下时,它不工作。

请帮忙

完整代码:

 Dim FileName As String Dim SummarySheet As Worksheet Dim WorkBk As Workbook Dim FolderPath As String Dim LastRow As Long Dim LastCol As Long Dim NRow As Long Dim NCol As Long Dim SourceRange As Range Dim DestRange As Range ' Create a new workbook and set a variable to the first sheet. Set SummarySheet = Workbooks.Add(xlWBATWorksheet).Worksheets(1) ' Set Worksheet Name ActiveSheet.Name = "BTS1 DL_HARQ" ' Call Dir the first time, pointing it to all Excel files in the folder path. FileName = Dir(FolderPath & "*BTS1_PHYMAC(DL_HARQ).csv*") ' Initialize column to 1 NCol = 1 ' Loop until Dir returns an empty string. Do While FileName <> "" ' NRow keeps track of where to insert new rows in the destination workbook. NRow = 1 ' Open a workbook in the folder Set WorkBk = Workbooks.Open(FolderPath & FileName) ' Set the cell in row 1 to be the file name. SummarySheet.Cells(1, NCol) = FileName 'Find the last row to be copied LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row 'Find the last row to be copied LastCol = ActiveSheet.Cells(13, Columns.Count).End(xlToLeft).Column ' Set the source range to be K14 to last row ' Modify this range for your workbooks. ' It can span multiple rows. ' Set SourceRange = WorkBk.Worksheets(1).Range("K14:K" & Lastrow) Dim rFind As Range Dim ColCount As Long Dim FindRow As Long Dim FindCol As Long For ColCount = 1 To LastCol With Range(Cells(1, ColCount), Cells(LastRow, ColCount)) Set rFind = .Find(What:="Tx Throughput [kbps]", LookIn:=xlValues, LookAt:=xlWhole) If Not rFind Is Nothing Then FindRow = rFind.Row FindCol = rFind.Column End If End With Next ColCount Set SourceRange = WorkBk.Worksheets(1).Range(Cells(FindRow + 2, FindCol), Cells(LastRow, FindCol)) ' Set the destination range to start at row 2 and ' be the same size as the source range. Set DestRange = SummarySheet.Cells(NRow + 1, NCol) Set DestRange = DestRange.Resize(SourceRange.Rows.Count, _ SourceRange.Columns.Count) ' Copy over the values from the source to the destination. DestRange.Value = SourceRange.Value ' Increase NRow so that we know where to copy data next. NRow = NRow + DestRange.Rows.Count ' Close the source workbook without saving changes. WorkBk.Close savechanges:=False ' Use Dir to get the next file name. FileName = Dir() ' Increase NCol to copy the next file on the next column NCol = NCol + 1 Loop End Sub 

我相信你在使用单元格时需要引用你的工作表:

 Set SourceRange = WorkBk.Worksheets(1).Range(WorkBk.Worksheets(1).Cells(FindRow + 2, FindCol), WorkBk.Worksheets(1).Cells(LastRow, FindCol)) 

如果你为这个工作表创build一个variables,它将会有很大的帮助,使得它更容易阅读和修改。