0
我做了一个代码,它将在我的表(table1)的所有行中搜索,并且当某个列中找到一个空白单元格时,该行将被复制到另一个表格(table2)并被擦除来自table1。当我把运行vb的代码保持“不运行”,我需要强制停止,但是当我在excel中查看表时,我发现他复制了一些行(不删除,因为我在他到达之前强制停止)。 我在一张95k行的桌子上做这个,花了很多时间,我需要那么快。 因此,这里的代码:删除具有一个特定列的行的空白
Function DeleteRows()
Debug.Print Time
Dim shtSrc As Worksheet, shtDest As Worksheet
Dim lRow As Long, Row As Long
Dim rw As Range, rngDel As Range
Application.ScreenUpdating = False
viewmode = ActiveWindow.View
ActiveWindow.View = xlNormalView
Application.EnableEvents = False
Application.DisplayStatusBar = False
ActiveSheet.DisplayPageBreaks = False
Row = 2
lRow = Range("A" & Rows.Count).End(xlUp).Row
Set shtSrc = Worksheets("Sheet3")
Set shtDest = Worksheets("Sheet2")
shtSrc.Range("A1:AQ1").Copy Destination:=shtDest.Range("A1")
For i = 2 To lRow
Set rw = shtSrc.Rows(i)
If (rw.Cells(42).Value = "") Then
rw.Copy shtDest.Rows(Row)
AddToRange rngDel, rw
Row = Row + 1
End If
Next i
If Not rngDel Is Nothing Then
rngDel.Delete
End If
Application.DisplayStatusBar = True
ActiveWindow.View = viewmode
Application.ScreenUpdating = False
Debug.Print Time
End Function
'utility sub for building up a range
Sub AddToRange(rngTot, rng)
If rngTot Is Nothing Then
Set rngTot = rng
Else
Set rngTot = Application.Union(rng, rngTot)
End If
End Sub