如果select了“列表框”,则删除Excel行

嗨,我需要帮助,我的代码应该删除我的表中的行一旦在列表框中select的项目,这是有点奇怪,当我运行它并没有删除我select的项目,但它删除了上面的一个:

Private Sub clearselected() Dim I As Long On Error Resume Next With ListBox1 For I = .ListCount - 1 To 0 Step -1 If .Selected(I) Then .RemoveItem I With Sheets("Expenses") .Rows(I + 2).EntireRow.Delete .Shape("Listbox1").ControlFormat.ListFillRange = _ .Range("B:B").Address End With End If todaysDate.Text = "" TextBox11.Text = "" TextBox13.Text = "" TextBox12.Text = "" TextBox4.Text = "" Next I End With End Sub 

删除所选

正如在注释中提到的,由于行和ListBox起始索引不同,应该将i+2更改为i+3

然而,只要你有这样的问题,只要尝试一些“高级”的debugging,告诉你到底发生了什么:

 With Sheets("Expenses") MsgBox (i + 2 & " is going to be deleted!") .Rows(i + 2).EntireRow.Delete 'or just .Rows(i + 2).Delete .Shape("Listbox1").ControlFormat.ListFillRange = _ .Range("B:B").Address End With 

因此,在删除之前,您将看到MsgBox ,告诉您将会发生什么事情。 如果你不满意,很容易将i+2更改为i+3等。