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

时间:2017-11-20 08:20:06

标签: excel vba excel-vba

您好,我需要帮助我的代码,它应该删除我的行  一旦在列表框中选择了项目,它就有点奇怪了,当我运行它时它没有删除我选择的项目,但它删除了它上面的项目:

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

Delete selected

1 个答案:

答案 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等。