【发布时间】:2011-12-12 16:54:49
【问题描述】:
我有这段代码从列表中查找项目的 excel 行并从列表中删除项目。我想要的......也是删除 Excel 行。
代码在这里
Private Sub imperecheaza_Click()
Dim ws As Worksheet
Dim Rand As Long
Set ws = Worksheets("BD_IR")
Rand = 3
Do While ws.Cells(Rand, 4).Value <> "" And Rand < 65000
If ws.Cells(Rand, 4).Value = gksluri.Value * 1 And ws.Cells(Rand, 5).Value = gksluri.List(gksluri.ListIndex, 1) * 1 Then
ws.Range(Rand, 1).EntireRow.Delete '(here I want to delete the entire row that meets the criteria from the If statement)
gksluri.RemoveItem gksluri.ListIndex
Exit Do
End If
Rand = Rand + 1
Loop
End Sub
我添加 ws.Range(Rand,1).EntireRow.Delete 的地方是我想删除整行但我不知道该怎么做的地方。我想要什么...如果它在单元格中找到相同的值,例如在我的列表的某些选定项目中,以便能够删除 excel 中的整行和列表框中的项目。它可以从列表框中删除项目,但我也不知道如何删除该行
【问题讨论】:
-
警告。如果您在循环中删除多行(从上到下运行),请确保您反转循环,从下到上。否则,您的循环将跳过您删除的行之后的行。通过从底部到顶部更改循环,您将防止这种情况发生(代价是在每个删除的行之后进行双重检查)。
-
也可以通过将 if 语句设置为仅在未删除行时递增来避免这种跳过。
-
@Wayne,绝对正确!最终“条条大路通罗马”。当有许多行需要删除时,您的解决方案会更优雅并且会更快。我主要担心的是人们在浏览文件和删除行时会意识到跳过行的问题。