Феникс, вы говорите, что пытаетесь найти последнюю цветную клетку.Но в вашем состоянии вы проверяете клетки на RGB (255, 255, 255)
, который имеет цвет Белый .Вам нужно использовать индекс или код для цвета Без заливки , который может выглядеть следующим образом .Interior.ColorIndex = xlNone
.Таким образом, даже если вы не получаете эти ошибки, ваш код, вероятно, не будет работать так, как вы собираетесь.Я мог бы предоставить решение вашей проблемы.
Прежде чем поделиться кодом, позвольте мне отметить несколько вещей.Поскольку я не знаю, как выглядят ваши данные, я не могу адаптировать код к вашим точным потребностям.Это базовый код, использующий мой любимый цикл For Each
, но, конечно, вы можете использовать любой цикл, который предпочитаете.
Цикл должен начинаться с цветных ячеек и продолжаться до тех пор, пока не встретится с первой неокрашенной ячейкой.Поэтому, если у вас есть несколько неокрашенных ячеек «в середине» столбца, цикл будет остановлен.
Пожалуйста, посмотрите код ниже:
Sub find_last_colored()
Dim cel As Range
Dim lastRow As Long
'define the number of last row in which the cell is not empty
lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
'loop through every cell in column A to the last non-empty cell
For Each cel In ActiveSheet.Range("A:A" & lastRow)
If cel.Interior.ColorIndex = xlNone Then
'activates the last colored cell and gives its address
cel.Offset(-1, 0).Activate
MsgBox cel.Offset(-1, 0).Address
Exit For
Else
End If
Next cel
End Sub
Вы можете заметить, что я сделалне определяя точную область действия диапазонов, я оставил это только как ActiveSheet.
, поэтому не забудьте изменить это при необходимости.Я надеюсь, что это решит вашу текущую проблему или, по крайней мере, направит вас в правильном направлении.