VBA:代码审查 - 字段删除问题

时间:2017-12-15 14:56:56

标签: excel vba excel-vba

代码实际上帮助我删除了我的工作表中的任何不需要的空白字段,它工作正常,直到昨天,但今天当我的工作表有超过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

我使用了记录宏功能来创建这个代码,现在我理解了它的问题。

请帮我解决问题

提前致谢。

1 个答案:

答案 0 :(得分:1)

如何更换代码行:

Range ("A2:K2000".Select) 

有类似的东西:

 ActiveSheet.Range("A2", ActiveCell.SpecialCells(xlLastCell)).Select