For循环列表框

时间:2018-01-17 20:22:00

标签: vba ms-access

希望你能提供帮助 - 我有一个简单的列表框,它是从DB填充的,有6列[ID,名称,ordnumber,数据,价格,邮政编码]

列表框的填充没有问题[因此,我不会发布代码]

我遇到的问题是,当我在列表框中选择项目时,我正试图获取价格的总计。

 With lstOrdersInBatch
   tbxTotal.value = 0
    For IntIndex = 0 To .ListCount - 1
        If .Selected(IntIndex) Then
         'tbxTotal = tbxTotal + .Column(4)


        End If

    Next
End With

它给了我不正确的价值

我已经完成了调试日志,似乎只选择了最后一项&并非全部选中。

希望你能提供帮助。

谢谢

请注意访问VBA编程。

=====已解决===

Retrieve column values of the selected row of a multicolumn Access listbox

这有答案。

   With lstOrdersInBatch
   tbxTotal.value = 0
   For IntIndex = 0 To .ListCount - 1
        If .Selected(IntIndex) Then
        tbxTotal = tbxTotal + lstOrdersInBatch.Column(4, IntIndex)
        End If

   Next

结束

谢谢你的尝试。

2 个答案:

答案 0 :(得分:1)

好吧,我已根据您的评论调整了代码:

Dim i As Integer
For i = 0 To Me.lstOrdersInBatch.ListCount - 1
    If Me.lstOrdersInBatch.Selected(i) Then
        tbxTotal = tbxTotal + Me.lstOrdersInBatch.ItemData(i)
    End If
Next i

答案 1 :(得分:0)

您可以使用以下内容减少迭代次数并避免使用if语句:

Dim idx
tbxTotal = 0
With lstOrdersInBatch
    For Each idx In .ItemsSelected
        tbxTotal = tbxTotal + .Column(4, idx)
    Next idx
End With