Поиск по столбцу таблицы объекта списка в цикле For - PullRequest
0 голосов
/ 05 февраля 2020

Итак, в самом простом объяснении; Я хочу выполнить поиск по моим ListObjecttable данным (в частности, по столбцу 9) и скопировать значения на другой лист, если они соответствуют критериям (пока игнорируйте этот бит).

В настоящее время мой код представляет таблицу в виде Объект списка, но не указывает столбец, потому что я буду использовать несколько столбцов. Когда я go до l oop через девятый столбец, хотя он дает мне ошибку времени выполнения 9. Я неправильно ссылаюсь на столбец?

Sub RequestedAssetList()

Dim FullAssLi As ListObject, RowToPasteTo As Long 'Defining the Table and Range
Set FullAssLi = ThisWorkbook.Sheets("Asset List").ListObjects("AssListTab") 'Set FullAsset Lists as the Asset Table

With ThisWorkbook 'Within the workbook
    .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Assets" 'Adds a sheet at the end of the workbook called Assets
End With

With ThisWorkbook.Sheets("Assets")
    RowToPasteTo = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 'Sets variable as the next exmpy row on column A of Assets' tab

    For i = 1 To ThisWorkbook.Sheets("Asset List").ListObjects("AssListTab").Range.Rows.Count 'For first interger to last row in table
        If FullAssLi.ListColumns(9).Value = UserForm2.SourceLiBo.Value Then

        End If
    Next i
End With
End Sub

Неверна ли строка If FullAssLi.ListColumns(9).Value = UserForm2.SourceLiBo.Value Then?

РЕДАКТИРОВАТЬ: пользовательская форма приносит значение, установленное в коде, запущенном ранее.

1 Ответ

2 голосов
/ 05 февраля 2020

Вы все время ссылаетесь на полный столбец:

If FullAssLi.ListColumns(9).Value = UserForm2.SourceLiBo.Value Then

Вместо этого попробуйте что-то вроде:

Dim LRow as ListRow
For Each LRow In FullAssLi.ListRows 
    If LRow.Range.Cells(9).Value = UserForm2.SourceLiBo.Value Then
    End If
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...