Ошибка «Несоответствие типов», но программа все еще работает - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь установить значения списка со множественным выбором в MS Access , используя VBA .Индексы для значений, которые я хочу выбрать, сохраняются в таблице с именем Индекс .Я хочу получить их из таблицы, разделить их (потому что они разделяются точкой с запятой), а затем установить значения списка.Вот мой код:

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, поэтому я конвертирую Strings в Long.Подпрограмма успешно устанавливает значения списка, но прежде чем она дает мне

Ошибка времени выполнения: '13' Несовпадение типов

, и это подчеркивает этострока кода:

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

Я не могу понять, почему я получаю ошибку или ее решение.Любые предложения приветствуются.

1 Ответ

0 голосов
/ 12 июня 2018

Одна или несколько ваших строк не являются чисто целыми числами.Вы пробовали проходить и печатать их?Ваша оригинальная строка заканчивается разделителем?Это может дать вам пустую строку в качестве последнего значения массива, которую нельзя преобразовать в число.

...