найти метод по столбцу по имени или индексу, перепрыгивая первую ячейку в DataBodyRange - PullRequest
0 голосов
/ 10 ноября 2019

Definições

У меня есть эта таблица на листе "Definições", и при поиске "Carregamento para" в столбце "Norma" он почему-то перепрыгивает ячейку A2... Я имею в виду, что в находке не упоминается ячейка A2, она идет прямо к A5.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Set ws = Worksheets("Definições")

Dim tbl1 As ListObject
Set tbl1 = ws.ListObjects("Tabela1")

Dim cell1 As Range
Dim cell1a As Range
Set cell1a = tbl1.ListColumns("Norma").DataBodyRange
Set cell1 = tbl1.ListColumns("Norma").DataBodyRange.Find(What:="Carregamento para", After:=tbl1.DataBodyRange.Cells(cell1a.Row - 1, 1))
Debug.Print "DataBodyRange:" & tbl1.ListColumns("Norma").DataBodyRange.Address
Debug.Print "A2.Value:" & ws.Range("A2").Value
Debug.Print cell1.Address
Debug.Print cell1a.Address
End Sub

Окно Immediate возвращает это. Использование заголовка "Norma" индекса 1 на ListColumns дает тот же результат.

DataBodyRange:$A$2:$A$7
A2.Value:Carregamento para
$A$5
$A$2:$A$7

Любая идея, где ошибка ... Попытался найти что-то подобное в Google, ноничего такого об ошибке / ошибке ...

1 Ответ

1 голос
/ 11 ноября 2019

Метод Find имеет необязательный параметр After. Из документации

После: ячейка, после которой вы хотите начать поиск. Это соответствует позиции активной ячейки, когда поиск выполняется из пользовательского интерфейса.

Обратите внимание, что после должна быть одна ячейка в диапазоне. Помните, что поиск начинается после этой ячейки;указанная ячейка не будет найдена до тех пор, пока метод не вернется к этой ячейке.

Если вы не укажете этот аргумент, поиск начнется после ячейки в верхнем левом углу диапазона.

Чтобы начать поиск в первой ячейке диапазона, укажите After в качестве последней ячейки в диапазоне: в вашем случае это будет(поскольку у вас уже есть Set cell1a = tbl1.ListColumns("Norma").DataBodyRange, давайте использовать это)

After:=cell1a.Cells(cell1a.Cells.Count)

Обратите также внимание на раздел справки Remaks

Настройки для LookIn, LookAt, SearchOrder и MatchByteсохраняется каждый раз, когда вы используете этот метод. Если вы не укажете значения для этих аргументов при следующем вызове метода, будут использованы сохраненные значения. Установка этих аргументов изменяет настройки в диалоговом окне «Поиск», а изменение настроек в диалоговом окне «Поиск» изменяет сохраненные значения, которые используются, если вы пропустите аргументы. Чтобы избежать проблем, устанавливайте эти аргументы явно каждый раз, когда вы используете этот метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...