您好,我需要帮助我的代码,它应该删除我的行 一旦在列表框中选择了项目,它就有点奇怪了,当我运行它时它没有删除我选择的项目,但它删除了它上面的项目:
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
答案 0 :(得分:2)
正如评论中所述,您应该将i+2
更改为i+3
,因为行的起始索引和ListBox
不同。
但是,每当遇到这样的问题时,只需尝试一些" advanced"调试,告诉你到底发生了什么:
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
等。