xlLastCell只能工作一半的时间

我试图通过以下代码删除Excel中的重复项:

Set rng = Range("A1", Range("A1").SpecialCells(xlLastCell)) rng.removeduplicates Columns:=8, Header:=xlYes 

这种方法似乎工作一半的时间。 有时候它有效,有时会给我以下错误:

在这里输入图像说明

运行时错误1004的search给我的信息,不应该有string,超过911字符,情况并非如此。 在同一个excel文件上多次运行代码时,大概有50%的时间。

我正在运行ms access 2007中的代码,但是所有的引用都打开了。 现在的问题是,如何解决这个问题,但任何其他更好的方法来轻松删除我的重复,也将受到赞赏。 谢谢。

编辑:完整的代码:

 Const xlLastCell As Long = 11 Const xlYes As Long = 1 Public Function formatreports(FileName As String) As String Dim xl As Excel.Application Dim xlwb As Excel.Workbook Dim xlsh As Excel.Worksheet Dim rng As Range Dim newname As String Set xl = CreateObject("Excel.Application") xl.DisplayAlerts = False xl.Visible = False Set xlwb = xl.Workbooks.Open(FileName) Set xlsh = xlwb.Worksheets(1) 'its MFR0004; This is solely for import reasons xlsh.Rows("1:4").Delete xlsh.Rows("2").Delete xlsh.Columns("A:B").Delete xlsh.Columns("B").Delete 'This as well xlsh.Range("J1") = "Total Weight" xlsh.Range("L1") = "Net Weight" xlsh.Range("O1") = "Gross Weight" xlsh.Range("AA1") = "Delivery Date" Set rng = xlsh.Range("A1", Range("A1").SpecialCells(xlLastCell)) rng.removeduplicates Columns:=8, Header:=xlYes newname = Left(FileName, Len(FileName) - 4) & ".XLSX" xlwb.SaveAs newname, FileFormat:=51 formatreports = newname xlwb.Save xlwb.Close xl.Quit Set xl = Nothing End Function 

问题是你的单元格不完全合格。

你需要尝试这样的事情

 ' change sheet1 to the relevant worksheet With ThisWorkbook.Sheets("Sheet1") Set rng = .Range("A1", .Range("A1").SpecialCells(xlLastCell)) rng.RemoveDuplicates Columns:=8, Header:=xlYes End With 

在旁边注意:因为你说你正在从Access工作,这段代码有时候工作,这意味着你可能使用早期绑定。 如果你不是那么你将不得不将这些添加到您的代码的顶部

 Const xlLastCell As Long = 11 Const xlYes As Long = 1