Search ListBox Error _ Не удалось установить свойство List.Недопустимое значение свойства - PullRequest
0 голосов
/ 19 января 2019

Я хочу ввести данные в TextBox2 для поиска данных в ListBox1, но есть ошибка «Не удалось установить свойство List. Недопустимое значение свойства». Отладка ".List (iii, ii - 1) = x1 (i, ii)"

Мой код

Private Sub TextBox2_Change()

Dim x1, i As Long, ii As Long, iii As Integer
x1 = [myCar]


Application.ScreenUpdating = False

With ListBox1
    If TextBox2 = "" Then
        .RowSource = "myCar"
    Else
        .RowSource = ""
        For i = 1 To UBound(x1, 1)
            If LCase(x1(i, 3)) Like LCase(TextBox2) & "*" Then 
                For ii = 1 To 12
                    .AddItem
                    .List(iii, ii - 1) = x1(i, ii)
                Next
                iii = iii + 1
            End If
        Next
    End If
End With

End Sub

1 Ответ

0 голосов
/ 19 января 2019

Переменная x1 не объявлена. Поэтому это должен быть вариант. Кажется, что [myCar] подразумевается как имя диапазона. Если это так, возможно, можно было бы присвоить его x1, если бы его местоположение было известно. Возможно, ваш TextBox находится на рабочем листе, и ссылка на самом деле работает. Возможно x1 пусто с этой точки вперед. Я предлагаю вам проверить.

Затем вы присваиваете «MyCar» свойству RowSource объекта ListBox. Как вы знаете, это свойство содержит строку. Если MyCar является rangename, он не может быть действительным адресом диапазона. Возможно, что-то вроде Range(MyCar).Address подойдет. .RowSource = "myCar" просто назначает слово «MyCar» для RowSource, и это должно дать сбой. В For i = 1 To UBound(x1, 1) вы теперь ожидаете, что x1 будет массивом. Возможно x1 = [myCar] эквивалентно ActiveSheet.Range(MyCar).Value. Я бы не использовал этот синтаксис, но вы проверили его функциональность выше.

Предполагается, что x1 действительно содержит значения диапазона. назначить их свойству List в ListBox не удастся, если свойство ColumnsCount не установлено. Это не видно из вашего кода. Мы также не можем сказать, равны ли столбцы, доступные в x1, столбцам, доступным в списке, или столбцам, требуемым кодом.

В ListBox есть строки и столбцы. Учитывая, что ваша переменная i считает строки, ваша переменная ii должна считать столбцы (я бы использовал R и C, чтобы помочь мне следить за тем, что я делаю). Затем, с учетом всех строк и столбцов, на что рассчитывает ваша переменная iii?

Итак, совершенно очевидно, что в вашем коде недостаточно контроля над строками и столбцами ListBox. Однако после сортировки вы можете обнаружить, что значения, которые вы хотите присвоить, не существуют. Поэтому строка, которая вылетает из вашей программы, может содержать более одной ошибки.

...