比较列表框时键入不匹配错误

时间:2013-08-21 17:22:27

标签: vba ms-access ms-access-2007 access-vba

 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类型不匹配突出显示我放入Bold的区域(“If Not finalist(j)= premlist(i)或finalist(j)=”“Then Then”)。我的计划是填充该列表,然后填写表格以生成我的报告。

2 个答案:

答案 0 :(得分:2)

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

可能有更好的方式来表达,但我不知道如何。但是如下所示的尝试会抛出&#34; Type Mismatch&#34; 错误......

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"

答案 1 :(得分:0)

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

finallist(j).value = premlist(i).value