excel - 从列表框用户窗体中删除一行

标签 excel vba

我有一个列表框,它显示了我需要添加一个删除按钮来删除所选行的 excel 工作表的行。我试过这个

Private Sub CommandButton3_Click()
Dim i As Integer

For i = 0 To Range("A65356").End(xlUp).Row - 1
    If lstDisplay.Selected(i) Then
        Rows(i).Select
        Selection.Delete
    End If
Next i
End Sub

但是当我尝试删除例如第 10 行时,它是被删除的第 9 行,它总是删除所选行之前的行

任何修复???

感谢大家

最佳答案

我必须自己测试一下,但我猜想是这样的:

Private Sub CommandButton3_Click()

Dim i As Long, rng As Range
With Me.lstDisplay
    For i = 0 To .ListCount - 1
        If .Selected(i) Then
            If Not rng Is Nothing Then
                Set rng = Union(rng, Sheets("Sheet1").Rows(i + 1))
            Else
                Set rng = Sheets("Sheet1").Rows(i + 1)
            End If
        End If
    Next i
End With

rng.EntireRow.Delete

End Sub

这样,您只需执行一次删除行。

顺便说一句,我预计会有一个多选列表框。如果它不是多选,它将简化代码,因为不需要循环列表框。

关于excel - 从列表框用户窗体中删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57993207/

相关文章:

excel - Vlookup 的运行时错误 1004

excel - 在 Excel 中,如何引用当前行而不是特定列?

excel - 用于创建新文件夹的数据验证

c# - 如果未安装 Excel,如何创建 Excel 实例

r - 如何在 R 中读取带有大量数字(可能是科学记数法)的 csv?

excel - 对象 'Union' 的方法 '_Global' 在同一工作表上的单元格上失败

vba - 将数据锁定到 Excel 图表

excel - 在 VBA 中大写动态范围

vba - 隐藏要粘贴到电子邮件中的 Excel 范围中的信息

vba - 使用动态引用将 Excel 公式转换为 VBA 代码