Access VBA:比较两个列表框
Posted
技术标签:
【中文标题】Access VBA:比较两个列表框【英文标题】:Access VBA: Compare two listboxes 【发布时间】:2017-01-23 16:24:20 【问题描述】:我在 Access VBA 中有两个列表框。 我想比较这两个列表框,如果第一个列表框中没有列出相同的项目,我想从第二个列表框中删除项目。
例如: 列表框 1 值:“项目 1”、“项目 3” 列表框 2 值:“第 1 项”、“第 2 项”、“第 3 项”
现在我想要一个比较这两个列表框并从列表框 2 中删除“项目 2”的函数,因为它没有在列表框 1 中列出。
我尝试了一些代码,但我唯一得到的就是这个:
If BR_TeamReport.ListCount > 0 Then
For i = 0 To BR_TeamReport.ListCount - 1
For y = 0 To BR_Team.ListCount - 1
If BR_TeamReport.ItemData(i) = BR_Team.ItemData(y) Then
MsgBox ("Don't Delete")
Else
MsgBox ("Delete")
End If
Next y
Next i
End If
【问题讨论】:
我假设 Listbox 1 还具有其他值,例如“Item 4”,因此每个列表框都包含不同的值。 【参考方案1】:考虑一下:
If BR_TeamReport.ListCount > 0 Then
For i = 0 To BR_TeamReport.ListCount - 1
FoundItem = False
For y = 0 To BR_Team.ListCount - 1
If BR_TeamReport.ItemData(i) = BR_Team.ItemData(y) Then
FoundItem = True
End If
Next y
If Not FoundItem Then
' Delete item as it was not found in the first listbox
BR_Team.RemoveItem (y)
End If
Next i
End If
我认为这将实现您想要的。
【讨论】:
请将我的答案标记为答案并向上箭头。谢谢 抱歉,刚才是这样做的:)【参考方案2】:为什么不清除第二个列表框,然后用第一个重新填充?
For i = 0 To LstBox2.ListCount - 1
LstBox2.RemoveItem(i)
next i
For i = 0 TO LstBox1.ListCount - 1
lstBox2.AddItem LstBox1.ItemData(i)
Next i
【讨论】:
以上是关于Access VBA:比较两个列表框的主要内容,如果未能解决你的问题,请参考以下文章
当未从多个选择框之一中选择项目时,基于 Access 中的多个“多个选择列表框”的 VBA 查询
Access 2007 VBA:构建一个列表框,其中包含来自另一个列表框的选择选项
VBA - Access 03 - 遍历列表框,使用 if 语句进行评估