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