2016-04-12 12 views
2

私が取り組むプログラムは、i - (i + 1)とi-(i-1)の形式の差異を読み取り、判別することです。差が4を超える場合、プログラムはiの行を削除します。プログラムは、最初の試行でうまくいきます。しかし、もう一度やり直すと、削除しないでください。条件が満たされたときにexcelで行全体を削除する方法

ます。Option Explicit

サブData_Delet()

Dim a As Double, b As Double, c As Double, i As Double 
Dim rkill As Range 
' a,b, and c are used as steps in order to proceed to the next data points 
a = 18 
b = 0 
c = 0 

With ThisWorkbook.Worksheets("Sheet1") 

    ' The second do loop delete data points that does not follow the requirements 
    Do 
    If Abs(.Cells(a - 1, 2) - .Cells(a, 2)) > 4 And Abs(.Cells(a, 2) - .Cells(a + 1, 2)) > 4 Then 
     If rkill Is Nothing Then 
      Set rkill = Rows(a) 
     Else 
      Set rkill = Union(rkill, Rows(a)) 
     End If 
    End If 
    a = a + 1 
    Loop Until .Cells(a, 2).Value = "" 
    rkill.EntireRow.Delete 
End With 

End Subの

答えて

3

変更

rkill.EntireRow.Delete 

If Not rkill is Nothing Then rkill.EntireRow.Delete 

このコードでは、範囲rkillrangeであるかどうかを確認してから削除します。それが範囲でない場合、後者の部分を実行しません。

代替は

On Error Resume Next 
rkill.EntireRow.Delete 
On Error GoTo 0 
(私はお勧めしません)になります
関連する問題