Метод 'Range' объекта '_Worksheet' не выполнен, несмотря на квалификационные диапазоны - PullRequest
0 голосов
/ 04 марта 2020

Я столкнулся с проблемой, и я не могу понять это. Вопросы с одной и той же ошибкой, похоже, имеют другую проблему.

У меня есть следующий код:

Option Explicit
Sub Bank_match()
    Dim x As Range, y As Range
    Dim FirstSheet As Worksheet, SecondSheet As Worksheet
    Dim Txn_count_1 As Integer, Txn_count_2 As Integer
    Dim i As Integer

    Set FirstSheet = Worksheets("Sheet1")
    Set SecondSheet = Worksheets("Sheet2")

    With FirstSheet
        Set x = Cells.Find(What:="Description", After:=Cells(1, 1), LookIn:=xlValues _
            , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
            Txn_count_1 = Range(x.offset(1, 0), x.offset(1, 0).End(xlDown)).Count
    End With

    With SecondSheet
        Set y = Cells.Find(What:="Description", After:=Cells(1, 1), LookIn:=xlValues _
            , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
            Txn_count_2 = Range(y.offset(1, 0), y.offset(1, 0).End(xlDown)).Count
    End With

    For i = 1 To Txn_count_1
            If FirstSheet.Range(x).offset(i, 1).Value = SecondSheet.Range(y).offset(i, 2).Value Or _
            FirstSheet.Range(x).offset(i, 2).Value = SecondSheet.Range(y).offset(i, 1).Value Then
                FirstSheet.Range(x.offset(i, 1)).EntireRow.Interior.ColorIndex = 6
                SecondSheet.Range(y.offset(i, 1)).EntireRow.Interior.ColorIndex = 6
            End If
    Next i
End Sub

По сути, я пытаюсь перебрать банковские выписки и выделить строки транзакций которые появляются на обоих листах. Моя проблема в том, что я получаю сообщение об ошибке в строке «Оператор If».

Сначала я подумал, что это могут быть ссылки на мои листы, но если я заменю «FirstSheet» и «SecondSheet» на Worksheets («Sheet1») ) и Worksheets («Sheet2») соответственно, я получаю «Ошибка приложения или объекта» в той же строке. Я получаю ту же ошибку, если также квалифицирую диапазон с помощью «ThisWorkbook».

Есть мысли?

1 Ответ

4 голосов
/ 04 марта 2020

Отбросьте FirstSheet.Range и SecondSheet.Range ... x и y уже являются объектами диапазона:

If x.Offset(i, 1).Value = y.offset(i, 2).Value...

Хотя вам необходимо проверить, был ли Find успешным .. в противном случае x или y может быть Nothing ... с использованием следующего:

If Not x Is Nothing Then ' and similarly for y

И вы пропускаете период . до Cells и Range

Set x = .Cells
Set y = .Cells
Txn_count_1 = .Range(...
Txn_count_2 = .Range(...     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...