You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA循环删除ListBox选中项报错:Could not get the selected property

问题原因
  • 核心触发原因:你在正向遍历ListBox2的过程中调用RemoveItem方法删除条目,会直接减少ListBox2的总项数ListCount,且被删除条目之后的所有条目索引都会自动减1。举个例子:假设列表初始有5项,索引范围是04,当i=1时删除了对应条目,剩余4项的索引会变为03;当循环继续执行到i=4时,i已经超过了当前列表的最大有效索引3,此时访问ListBox2.Selected(i)就会触发无效参数报错。
  • 第二段逻辑相似的代码可正常运行的原因:遍历过程中仅读取ListBox1的选中状态和内容,没有修改ListBox1的条目数量,所有遍历的i值全程都对应有效索引,因此不会触发报错。
解决方案

把正向遍历改为倒序遍历即可,从列表最后一项开始往第一项遍历,删除条目不会影响还未遍历到的前序条目的索引,修改后代码如下:

Private Sub CommandButton2_Click()
Dim i%
'ListBox2.Clear
' 倒序遍历,从最后一项索引开始到0结束
For i = ListBox2.ListCount - 1 To 0 Step -1
    If ListBox2.Selected(i) = True Then
        ListBox2.RemoveItem (i)
    End If
Next i
End Sub

内容的提问来源于stack exchange,提问作者Suril Mehta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:24:04