访问:多列表框-使用VBA

问题描述

我在访问中有一个表单,该表单具有一个名为“ lstLoadedFiles”的列表框,该列表框显示了已上传到我的数据库的所有文件的列表。

此列表框包含3列,是一个多选列表框,因此用户可以一次从列表中选择一个以上的项目。

该lisBox如下所示:

Type        FileName            Status
Blue        Bluefile1.xls       Loaded
Blue        Bluefile2.xls       Loaded
Red         Redfile3.xls        Loaded
Green       Greenfile1.xls      Loaded

然后,用户可以在此列表框中选择多个记录,然后单击一个按钮,代码将运行以验证所有已选择项目的文件

此列表框最多可以包含20个文件名。我希望用户能够选择一个按钮,它将突出显示列表框中与某种特定类型(例如'蓝色'。 (这是必需的,因此,如果用户仅拥有一种类型的所有相关文件,则他们可以在整个过程中移动而不必等待其他类型的其余文件-并且他们不必从列表框中单独选择所有文件对于一种类型,例如蓝色)

我的问题是,此列表框中的项目永远不会以相同的顺序出现,并且永远不会有相同数量文件(例如,可能会针对blue类型上传3个文件,但是下次它们仅运行1个文件时,可能已上传),因此无法使用以下内容

Forms("MyForm").lstLoadedFiles.Selected(0) = True

有没有一种方法可以对它进行编码以使其具有以下内容

If optSelectAllBlue = True Then
    lstLoadedFiles. Select Items where column type = 'Blue' .....

其中optSelectAllBlue将是一个按钮。还是列表框无法做到这一点?

预先感谢

解决方法

遍历列表框项目,并测试value =所选颜色以及是否匹配select项目。技巧是弄清楚如何使颜色值动态化。如果您使用的OptionGroup仅有3个用于红色/绿色/蓝色的单选按钮,则类似:

Dim x As Integer
With Me.lstLoadedFiles
For x = 0 To .ListCount - 1
    If .ItemData(x) = Choose(Me.optColor,"Red","Green","Blue") Then .Selected(x) = True
Next
End With