Vba 当选择多个项目时,ListBox循环将跳过第一个项目

Vba 当选择多个项目时,ListBox循环将跳过第一个项目,vba,ms-access,Vba,Ms Access,就像标题所说的,我有一些代码,可以在列表框中循环,并为所选项目设置一些变量。一旦用户选择了多个项目,循环将跳过第一个选定的项目。但是,如果只选择了一个项目,则它可以正常工作。我搞不懂这个 With Me.lstQualifier For iCnt = 0 To Me.lstQualifier.ListCount - 1 If (Me.lstYear.Selected(iCnt) = True) Then qual = Me.lstQualifier

就像标题所说的,我有一些代码,可以在列表框中循环,并为所选项目设置一些变量。一旦用户选择了多个项目,循环将跳过第一个选定的项目。但是,如果只选择了一个项目,则它可以正常工作。我搞不懂这个

With Me.lstQualifier
    For iCnt = 0 To Me.lstQualifier.ListCount - 1
        If (Me.lstYear.Selected(iCnt) = True) Then
            qual = Me.lstQualifier.Column(1)
            qualType = Me.lstQualifier.Column(0)
            Call AddQualifier(ProductCat, make, model, yr, BasePart, qual, qualType)
        End If
    Next
End With

真是愚蠢的错误。.Column()函数调用列号和行号。现在代码如下所示

With Me.lstQualifier
    For iCnt = 0 To Me.lstQualifier.ListCount - 1
        If (Me.lstYear.Selected(iCnt) = True) Then
            qual = Me.lstQualifier.Column(1, iCnt) 'added iCnt as row number
            qualType = Me.lstQualifier.Column(0, iCnt) 'added iCnt as row number
            Call AddQualifier(ProductCat, make, model, yr, BasePart, qual, qualType)
        End If
    Next
End With

不要遍历所有项目,而是遍历选定的项目。既然您有
和Me.lstQualifier
在循环中不需要重复
Me.lstQualifier

Dim varItem As Variant
With Me.lstQualifier
    For Each varItem In .ItemsSelected
        If Not IsNull(varItem) Then
            qual = .Column(1, varItem)
            qualType = .Column(0, varItem)
            Call AddQualifier(ProductCat, make, model, yr, BasePart, qual, qualType)
        End If
    Next
End With

不仅如此,它似乎还在为我选择的项目数量添加最后一个项目。因此,选择四个不同的项目,最后选择的项目将添加四次。