【问题标题】:Delete a selected row from list boxes in Userform从用户窗体的列表框中删除选定的行
【发布时间】:2020-02-02 15:55:19
【问题描述】:

我的用户表单中有两个列表框。第一个是 lstBox1,另一个是 lstBox2,分别带有“PUB1”和“PUB2”表。我尝试创建一个命令按钮,该按钮可以从任何列表框以及工作表中删除选定的行,并将单元格行向上移动,这样就不会出现空白行。

我使用以下代码行为其中一个列表框启动它,它运行良好,但不知道如何修改它以在相同过程下为另一个列表框工作。

Private Sub cmdDelete_Click()

Dim i As Integer

For i=0 To Range ("A50").End(x1Up).Row-1

 If lstBox1.Selected(i) Then

   Rows(i).Select

   Selection.Delete

  End If

Next i

End Sub

【问题讨论】:

  • 你的常量应该是xlUp 而不是x1Up

标签: excel vba listbox userform


【解决方案1】:

类似这样的:

Private Sub cmdDelete_Click()

With Worksheets("PUB1")
Dim i As Long

For i = 1 To .Range("A50").End(xlUp).row

 If lstBox1.Selected(i) Then

   .Rows(i).Delete

 End If

Next i
End With

With Worksheets("PUB2")

For i = 1 To .Range("A50").End(xlUp).row

 If lstBox1.Selected(i) Then

   .Rows(i).Delete

 End If

Next i

End With

End Sub

【讨论】:

  • 友情提示:-) 缺少End Withs;一般来说,尽管低行计数器 i As Long 的类型声明而不是 Integer 用于工作表计数器(以避免可能的溢出)。
  • @T.M. ..感谢您发现这一点。 :)
  • 每当我点击删除按钮时,代码都会出错。
  • 哪一行给出了错误?
  • 从第三行开始的整个代码。我什至尝试在 Range 之前删除点(。),但没有响应命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多