Я пытаюсь использовать этот код для отображения переполнения на другое значение в столбце I на листе 20170224-SUAGDB. Но я получаю Error 1004 о строке If Works....Value Then. Может кто-нибудь помочь мне с ошибкой?

Dim i As Long

For i = 2 To Rows.Count
    If Worksheets("20170224-SUAGDB").Cells(i, 9).Value <> Worksheets("20170224-SUAGDB").Cells((i + 1), 9).Value Then
        Cells(i, 9).Font.Color = vbRed
    End If
Next i
1
Mcnanny 4 Апр 2017 в 13:30

2 ответа

Лучший ответ

Некоторые из ваших объектов не полностью квалифицированы. Например, получите номер последней строки в столбце «I» (9) в «Рабочих листах» («20170224-SUAGDB»).

Попробуйте код ниже:

Dim i As Long

With Worksheets("20170224-SUAGDB")
    For i = 2 To .Cells(.Rows.Count, 9).End(xlUp).Row '<-- get last row in column "I" (column 9)
        If .Cells(i, 9).Value <> .Cells((i + 1), 9).Value Then
            .Cells(i, 9).Font.Color = vbRed
        End If
    Next i
End With
0
Shai Rado 4 Апр 2017 в 10:58

Поскольку у вас нет .select'ed какого-либо конкретного Range() в вашем Worksheet, ваше Rows.Count значение равно 1048576.

Вы можете проверить это значение, используя MsgBox Rows.Count.

Итак, когда ваш цикл переходит от 1 к 1048576, на последней итерации, когда вы пытаетесь сравнить .Cells(i, 9).Value с .Cells((i + 1), 9).Value, второй член «взрывает» ваше общее число строки !

Ваш код ищет номер строки 1048577 - который не существует - поэтому он выдает ошибку 1004.

Одно из возможных решений меняется:

  • Это: For i = 2 To Rows.Count
  • На это: For i = 2 To Rows.Count - 1

Это решение будет перебирать строки all - 1, даже если они не содержат никаких данных.

Или, может быть, даже:

  • Это: For i = 2 To Rows.Count
  • На это: For i = 2 To Range("I:I").End(xlDown).Row - 1

Это решение получает значение последней непустой строки выбранного столбца.

ps. Если вы не добавите - 1 в For i = 2 To Range("I:I").End(xlDown).Row - 1, а ваша рабочая таблица содержит некоторые данные с номером строки 1048576, ваш код выдаст ту же ошибку 1004 .

2
dot.Py 4 Апр 2017 в 12:21