Размещение кода в таблице ListObject - PullRequest
0 голосов
/ 29 мая 2020

Приведенный ниже код VBA просматривает столбец B таблицы. Когда значение (60) определяется в столбце B, я затем копирую соседнее значение из столбца C в столбец D. Я пробовал сделать смещение, которое отлично работает, когда не в формальной таблице ListObject, но я получаю сообщение об ошибке сообщение в таблице "недопустимая или неквалифицированная ссылка". Как обновить код VBA для работы в таблице Excel? Я поискал и попробовал несколько изменений, но все еще получаю ошибки.

Sub TableFind()

Dim LastRow As Long
Dim rng As Range, C As Range

With Worksheet.ListObjects("myTable")
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
    Set rng = .Range("B2:B" & LastRow)

        For Each C In rng
        If C.Value = "60" Then
            C.Offset(, 3).Copy
            C.Offset(, 4).PasteSpecial Paste:=xlPasteValues
        End If
    Next C
End With

End Sub

1 Ответ

2 голосов
/ 29 мая 2020

Нет необходимости искать последнюю строку в таблице; DataBodyRange относится к телу таблицы, поэтому просто работайте с этим.

Предполагая, что ваша таблица начинается в столбце A, вы потенциально можете сделать следующее:

With Worksheet.ListObjects("myTable")
    For Each C in .ListColumns(2).DataBodyRange
        If C.Value = "60" Then
            C.Offset(, 2).Value = C.Offset(,1).Value
        End If
    Next C
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...