代码实际上帮助我删除了我的工作表中的任何不需要的空白字段,它工作正常,直到昨天,但今天当我的工作表有超过2300行数据时,代码从工作表中删除了第一行2000行并给了我剩余的300排。
我知道问题出在这一行
Range ("A2:K2000".Select)
除了更改K的值
之外,是否有任何替代此方案的解决方案代码
Sub Delete_blank()
With ActiveSheet
If .Autofiltermode = False Then Cells.Select
Selection.AutoFilter
ActiveSheet.Range ("$A$2:$C$") & lastrow.AutoFilter Field:=1, Criterial:="="
ActiveSheet.Range ("$A$2:$C$") & lastrow.AutoFilter Field:=2, Criterial:="="
ActiveSheet.Range ("$A$2:$C$") & lastrow.AutoFilter Field:=3, Criterial:="="
Range ("A2:K2000").Select
Selection.EntireRow.Delete
ActiveSheet.ShowAllData
.AutoFilterMode = False
End With
End Sub
'INPUT : Sheet, the worksheet we'll search to find the last row
'OUTPUT : Long, the last occupied row
'SPECIAL CASE: if Sheet is empty, return 1
Public Function LastOccupiedRowNum(Sheet As Worksheet) As Long
Dim lng As Long
If Application.WorksheetFunction.CountA(Sheet.Cells) <> 0 Then
With Sheet
lng = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
End With
Else
lng = 1
End If
LastOccupiedRowNum = lng
End Function
我使用了记录宏功能来创建这个代码,现在我理解了它的问题。
请帮我解决问题
提前致谢。
答案 0 :(得分:1)
如何更换代码行:
Range ("A2:K2000".Select)
有类似的东西:
ActiveSheet.Range("A2", ActiveCell.SpecialCells(xlLastCell)).Select