2011-10-21 37 views
0

這是我想要做的。 我有下面的代碼:如果在Excel列中找到值,請刪除列表項

Private Sub imperecheaza_Click() 
Dim ws As Worksheet 
Dim Rand As Long 
Set ws = Worksheets("BD_IR") 
Set ws2 = Worksheets("BD_AR") 

Rand = 3 
Do While ws.Cells(Rand, 4).Value <> "" And Rand < 65000 
    If ws.Cells(Rand, 4).Value = gksluri.Value And ws.Cells(Rand, 5).Value = gksluri.List(gksluri.ListIndex, 1) Then 
      gksluri.RemoveItem gksluri.ListIndex 
    End If 
Rand = Rand + 1 
Loop 
End Sub 

的問題是,它不工作,我不知道爲什麼。 If必須有一些東西。 我想要做的是...如果在Excel的列中找到列表框的值以刪除該項目。 另外...它檢查列表框第二列中的值。 (列表框有8列)。

給你舉個例子。

,我有以下數據在Excel中: enter image description here

而且在列表框中的下列項目

enter image description here 當我點擊imperecheaza我想在列表框中要刪除的項目,並在該行要刪除的Excel文件。 任何想法? 謝謝!

+1

你是什麼意思「它不工作」?它會拋出一個錯誤嗎?如果是這樣,那麼錯誤信息是什麼? – PowerUser

+0

另外,gksluri是什麼樣的對象?它沒有在您的代碼示例中定義。 – PowerUser

+0

爲什麼不使用thisworkbook.ws.cells! – niko

回答

1

嘗試乘以1您的列表框中的值:

If ws.Cells(Rand, 4).Value = gksluri.Value * 1 And ws.Cells(Rand, 5).Value = gksluri.List(gksluri.ListIndex, 1) * 1 Then 

而且,你不顯示的代碼刪除行!

+0

謝謝...它的工作原理...問題是,它刪除所有的項目:)) –

+0

這可能是因爲在我刪除gksluri.ListIndex ...後,列表中的第二項被選中,我將申請它的代碼也會刪除它......我該如何解決這個問題? –

+1

找到匹配項並刪除項目和行後退出循環。一般來說,有更精確和有效的方法來做你想做的事情。嘗試找到符合條件的一行,將其刪除,然後刪除列表框項目。 –