获得'类型不匹配'错误但程序仍然有效

时间:2018-06-12 18:49:12

标签: vba ms-access access-vba runtime-error type-mismatch

我正在尝试使用 VBA MS Access 中设置多选列表框的值。我想要选择的值的索引保存在名为索引的表中。我想从表中检索它们,拆分它们(因为它们用分号分隔),然后设置列表框值。这是我的代码:

Private Sub SetListBox()
    Dim Indexes As String
    Dim IndexArray() As String

    Indexes = rsIndex!EIndex  //Gets the semi-colon delimited value from 'Index' table
    IndexArray = Split(Indexes, ";")  //Array of strings holding the different indexes

    ReDim IndexArrayLong(UBound(IArray)) As Long  //Creating an array of Long with the same length as IndexArray

    For i = 0 To UBound(IndexArray)
        IndexArrayLong(i) = CLng(IndexArray(i)) //Converts the Strings into Longs and places them in Long Array
        Me.listBox.Selected(IArrayL(i)) = True //Sets listbox values
    Next

End Sub

经过一些研究,我发现List Box值的索引是Long数据类型,这就是我将字符串转换为Longs的原因。 sub成功设置了列表框值,但在此之前,它给了我

  

运行时错误:' 13'类型不匹配

它突出显示了这行代码:

IndexArrayLong(i) = CLng(IndexArray(i))

我似乎无法弄清楚为什么我会收到错误或解决方法。任何建议表示赞赏。

1 个答案:

答案 0 :(得分:2)

您的一个或多个字符串不仅仅是一个整数。你试过循环并打印它们吗?您的原始字符串是否以分隔符结尾?这可能会给你一个空字符串作为数组的最后一个值,它不能转换为数字。