首页 > 解决方案 > 从 Excel 列表框中删除项目

问题描述

我需要在某些条件下使用 Range 中的数据从 Listbox 中删除项目。我不想删除列表框所基于的工作表中的数据。

这是我的代码的摘录:

 Me.LstWSource.RowSource = ""

 If Len(rRange.Offset(1, 0).Formula) > 0 Then
    Set rRange = ThisWorkbook.Sheets(G_sNameReferenceS).Range(rRange.Offset(1, 0), rRange.End(xlDown))

 With Me.LstWSource
  .ColumnWidths = "28pt"
  .RowSource = rRange.Address
  .ListIndex = -1
  End With '>>>
End If

  '>>>>>>>>>>>>>>>>>>>>>>>>
  sRet = fG_SortingBasicS("lstYear", "DESC")
  '>>>>>>>>>>>>>>>>>>>>>>>>

  For i = Me.LstWSource.ListCount - 1 To 0 Step -1

   '>> current string condition to delete Item <<
   If Me.LstWSource.List(i) > CStr(Year(G_datJourTraitee)) Then
     Me.LstWSource.RemoveItem (i)
   End If
 Next i

错误由 RemoveItem 触发。

标签: excelvbalistbox

解决方案


如果您使用.RowSource填充 ListBox,则无法从列表中删除列表项。

因此,您需要使用 填写您的列表LstWSource.AddItem。循环遍历您的范围并根据您的条件将每个项目添加到您的 ListBox。另请参阅在具有多列的列表框中添加项目


推荐阅读