2016-01-22 65 views
1

我想刪除不等於選定的組合框值的行。我有下面的代碼,但我得到一個運行時錯誤424對象所需。任何人都可以協助刪除不等於組合框值的行嗎?

Dim wkss As Worksheet, wkJob As Worksheet 
Dim i As Long 
Set wkss = Sheets("TempWs6") 
Set wsJob = Sheets("Job") 

wkss.Select 

For i = Cells(Rows.Count, 10).End(xlUp).Row To 1 Step -1 
    If Cells(i, 10) <> wsJob.ComboBox1.Value Then 
     wkss.Rows(i).Row.Delete 
    End If 
Next i 

非常感謝!

+0

錯誤是否在'wsJob.ComboBox1.Value'行出現? – BruceWayne

+0

我修改了一些代碼,但它發生在「wkss.Rows(i).Row.Delete」 – Chris2015

+1

嘗試使用'wkss.Rows(i).EntireRow.Delete'。 – BruceWayne

回答

3

要刪除行,你會使用EntireRow

wkss.Rows(i).EntireRow.Delete應該這樣做!

(對於它的價值,同樣也適用於除一整列,使用​​)

編輯:讓我們清理的範圍和選擇,通過assigning parentageWith聲明。

Dim wkss As Worksheet, wkJob As Worksheet 
Dim i As Long 
Set wkss = Sheets("TempWs6") 
Set wsJob = Sheets("Job") 

With wkss 

For i = .Cells(.Rows.Count, 10).End(xlUp).Row To 1 Step -1 
    If .Cells(i, 10) <> wsJob.ComboBox1.Value Then 
     .Rows(i).EntireRow.Delete 
    End If 
Next i 
End With 

.Cells([...]).Row to 1 Step -1做到這一點:在你的最後一行開始(你從...(xlUp).Row獲得),運行下面的代碼,那麼「階梯」上移一行,並再次運行,並重復,直到你到達行1

+3

FWIW'wkss.Rows(i).Delete'也可以。 –

+0

@ScottCraner - 啊,是的。這是對的 - 我只是在想他希望看到額外的描述符('EntireRow')保持在那裏。 – BruceWayne

+0

我收到錯誤運行時錯誤'1004'範圍類的刪除方法失敗。它會刪除我需要的行,但在行wkss.Rows(i).EntireRow.Delete上發出該錯誤。有任何想法嗎? – Chris2015