Excel VBA работает с ячейкой внутри таблицы с учетом ее диапазона
Я только начал работать с VBA для стажировки, и у меня небольшая проблема с моим текущим проектом. Я уверен, что это прямое исправление, которое я не вижу, поскольку в Интернете нет ничего для этого.
Мой рабочий лист принимает пару входных значений в строке объектов списка и возвращает соответствующие значения из сопоставления другим столбцам в той же строке.
Я хочу, чтобы он запускал подпункт FindBankInfo только для строки, которую изменил пользователь
If Not Intersect(Target, lo.ListColumns("Document Type").Range) Is Nothing Or Not Intersect(Target, lo.ListColumns("Bank").Range) Is Nothing _
Or Not Intersect(Target, lo.ListColumns("Transit Type").Range) Is Nothing Then
'rowCount in the sub is used as lo.listrow(rowcount), it's the table row I am working with
FindBankInfo lo, loMap, loMap2, rowCount
End If
Я могу заставить эту работу так
If Not Intersect(Target, lo.ListColumns("Document Type").Range) Is Nothing Or Not Intersect(Target, lo.ListColumns("Bank").Range) Is Nothing _
Or Not Intersect(Target, lo.ListColumns("Transit Type").Range) Is Nothing Then
For Each lr in lo.ListRows
rowCount = rowCount + 1
FindBankInfo lo, loMap, loMap2, rowCount
Next lr
End If
Таким образом, он проходит через каждый ряд каждый раз, когда что-то меняется, и в подпункте я пропускаю, если он уже заполнен. Но это кажется глупым и неэффективным, и становится медленным, если строк много, так как я проверяю пустые строки между заполненными строками, поэтому я не могу просто закончить пустым.
Что мне нужно, так это заданная цель, как я могу преобразовать этот целевой диапазон в соответствующий диапазон ListObject и получить номер строки ListObject???
Target.ListObject дает мне подходящий диапазон для моей таблицы, поэтому я знаю, что он может коснуться ее, и я могу получить точный диапазон, с которым я хочу взаимодействовать, но номер строки относится к количеству строк листов, а не к таблицам. Я был бы очень признателен за некоторые рекомендации, спасибо.
1 ответ
Преобразуйте вашу подпрограмму в UDF и используйте в качестве формулы в своей таблице.