Найти строку из таблицы Excel с помощью VBA - PullRequest
3 голосов
/ 06 июня 2011

В Excel я использую таблицы для хранения динамических данных внутри отдельной таблицы. Ввод новых данных работает как чудо, однако я хотел бы иметь возможность динамически извлекать одну строку из этой таблицы и сохранять ее данные в переменных. Я бы предпочел построить функцию, чтобы я мог сделать что-то вроде этого:

findFromCatsByDate(searchterm) 'returns a single row if found with mathing date.

Обратите внимание, что таблица является динамической, а не фиксированным диапазоном (поэтому она изменяется по вертикали). Я хочу использовать эту функцию с небольшими изменениями в других таблицах. Мне нужен пример, как этого добиться в VBA.

Спасибо

1 Ответ

8 голосов
/ 06 июня 2011

Будет возвращена ссылка на строку, которая соответствует Key в указанной таблице

Function GetRow(TableName As String, ColumnNum As Long, Key As Variant) As Range
    On Error Resume Next
    Set GetRow = Range(TableName) _
        .Rows(WorksheetFunction.Match(Key, Range(TableName).Columns(ColumnNum), 0))
    If Err.Number <> 0 Then
        Err.Clear
        Set GetRow = Nothing
    End If
End Function

Пример использования

Sub zx()
    Dim r As Range
    Set r = GetRow("MyTable", 1, 2)
    If Not r Is Nothing Then
        r.Select
    End If
End Sub
...