1
 Dim lastcomp As String
        Dim qty As Integer
        Dim rs As New ADODB.Recordset
        rs.Open "select Prem1Item,Prem1Qty from [TU FAR Before VB] order by Prem1Item", accCon
        Do While Not rs.EOF
            If Not IsNull(rs(0).Value) Then
                If rs(0).Value <> "n/a" Then
                    If rs(0).Value <> "" Then
                        premlist.AddItem rs(0).Value & Format(rs(1).Value, "00")
                    End If
                End If
            End If
            rs.MoveNext
        Loop
        rs.Close
        Dim i As Integer
        Dim j As Integer
        i = 1

        For i = 1 To premlist.ListCount
            For j = 1 To finallist.ListCount
                    **If Not finallist(j) = premlist(i) Or finallist(j) = "" Then**
                        finallist.AddItem premlist(i)
                    End If
            Next j
        Next i
        AccessConnection ("Close")

    End If

我正在尝试记录并提取 Prem1Item 中的所有项目,然后压缩以不显示重复项,并从 Prem1Qty 获取金额并显示它找到的每个项目的总数。我试图将它们放在这些列表框中,然后将它们导出到具有 2 列(Premium 和 Sum)的表中

我收到错误 13 类型不匹配突出显示我在粗体中放置的区域(“如果不是决赛选手(j)= premlist(i)或决赛选手(j)=”“那么”)。我的计划是填充该列表,然后填写表格以生成我的报告。

4

2 回答 2

2

列表框对象不允许您检索具有索引值的行值,就像您检索数组、VBA 集合或记录集Fields集合等一样。

可能有更好的说法,但我不知道如何。但是像下面这样的尝试会抛出“类型不匹配”错误......

Debug.Print Me.finallist(1)
Debug.Print TypeName(Me.finallist(1))

如果要从列表框的每一行检索绑定的列值,请使用该ItemData属性。

Dim i As Long
For i = 0 To (Me.finallist.ListCount - 1)
    Debug.Print Me.finallist.ItemData(i)
Next
Debug.Print "done"
于 2013-08-21T23:57:41.063 回答
0

我认为您应该尝试将 .value 添加到您的比较中,例如

finallist(j).value = premlist(i).value
于 2013-08-21T18:03:29.023 回答