2017-08-14 83 views
0

如果滿足條件,B列中的值小於100,我試圖刪除excel中的一行。我看到this並試圖關注它,但我不是那種VBA知識淵博的人,所以我不知道該去哪裏。如果值小於X,則在Excel中刪除行

編輯 這是我到目前爲止試過的代碼,它不起作用。

Sub DeleteR() 
Dim myRow As Range 
Dim toDelete As Range 

For i = 2 To 5000 
    If Worksheets("PalCountPLTZR").Cells(i, 2) < "99" Then 
    Set myRow = Worksheets("PalCountPLTZR").Rows(i) 
    If toDelete Is Nothing Then 
     Set toDelete = myRow 
    Else 
     Set toDelete = Union(toDelete, myRow) 
    End If 
End If 
Next i 

End Sub 

我不知道爲什麼它不工作,但我想知道如果它看細胞是從查詢。

+2

這裏有一些其他的方法; https://stackoverflow.com/questions/33744149/code-in-vba-loops-and-never-ends-how-to-fix-this嘗試這些,當你陷入困境,請帶上你試過的代碼,並解釋你調整它,爲什麼它不工作。 –

回答

1

你可以用這個循環來檢查和刪除列「A」行:

Sub DeleteRows() 
    'get last row in column A 
    Last = Cells(Rows.Count, "A").End(xlUp).Row 
    For i = Last To 1 Step -1 
     'if cell value is less than 100 
     If (Cells(i, "A").Value) < 100 Then 
      'delete entire row 
      Cells(i, "A").EntireRow.Delete 
     End If 
    Next i 
End Sub 
+0

我試過這個,但它沒有做任何事情。 – Lampoa

+0

其實,我找到了它,只是不需要圍繞我正在尋找的價值「...」謝謝! – Lampoa

+0

您的值在'A'列嗎? –

0

埃德表明你的.Delete部分,在後您鏈接:

克里斯·尼爾森的解決方案很簡單,將工作做好。稍微 較短的辦法是......

ws.Rows(RAND).Delete

除了這些知識,你就需要添加一個if語句,以顯示標準進行刪除,如:

If Cells(i,2)="x" Then 
    Rows(i).Delete 
    End If 

這種方法將使用一個循環爲我,所以你需要閱讀。

祝你好運,並在未來,把你已經嘗試過的代碼,特別是如果你已經嘗試實現,如果你已經發現其他代碼在線,所以我們可以嘗試幫助解決問題。

+0

我已經添加了迄今我嘗試過的代碼。 – Lampoa

0

兩件事情,

"99"應該只是99

而你從來沒有在年底做刪除。

Sub DeleteR() 
Dim myRow As Range 
Dim toDelete As Range 

For i = 2 To 5000 
    If Worksheets("PalCountPLTZR").Cells(i, 2) < 99 Then 
    Set myRow = Worksheets("PalCountPLTZR").Rows(i) 
    If toDelete Is Nothing Then 
     Set toDelete = myRow 
    Else 
     Set toDelete = Union(toDelete, myRow) 
    End If 
End If 
Next i 
If Not toDelete Is Nothing Then toDelete.EntireRow.Delete 
End Sub 
+0

我收到了一個錯誤消息「1004刪除類範圍失敗的方法」與「toDelete.EntireRow.Delete」 – Lampoa

+0

我沒有得到這樣的錯誤。我嘗試了很多事情來嘗試重現錯誤,但不能。檢查以確保您沒有錯別字。 –

相關問題