Окрашивание ячеек в Excel только от последнего столбца до последней строки и последней строки до последнего столбца - PullRequest
1 голос
/ 13 июня 2019

Я хотел бы выделить всю строку последней ячейки до ее последнего столбца и наоборот для всего столбца

Я использовал метод CompleteRow и WholeColumn и обнаружил, что он немного ошибочен для моего подхода, поскольку он окрашивает всю строку и столбец.

Option Explicit
Sub Range_End_Method()
'Finds the last non-blank cell in a single row or column
Dim lRow As Long
Dim lCol As Long
Dim c As Range

'Find the last non-blank cell in column A(1)
lRow = Cells(Rows.Count, 1).End(xlUp).Row

'Find the last non-blank cell in row 1
lCol = Cells(1, Columns.Count).End(xlToLeft).Column

Cells(lRow, lCol).EntireRow.Interior.Color = RGB(174, 240, 194)
Cells(lRow, lCol).EntireColumn.Interior.Color = RGB(174, 240, 194)
End Sub

1 Ответ

4 голосов
/ 13 июня 2019

Попробуйте:

Range(Cells(lRow, 1), Cells(lRow, lCol)).Interior.Color = RGB(174, 240, 194)
Range(Cells(1, lCol), Cells(lRow, lCol)).Interior.Color = RGB(174, 240, 194)

Я бы посоветовал объявить и использовать переменную рабочего листа (по крайней мере) на тот случай, если вы хотите вызвать этот саб из другого листа и / или другой рабочей книги.

Сказав это, ваш саб будет выглядеть потом:

Option Explicit

Sub Range_End_Method()
    Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("sheet name")
    With ws
        Dim lRow As Long: lRow = .Cells(Rows.Count, 1).End(xlUp).Row 'Find the last non-blank cell in column A(1)
        Dim lCol As Long: lCol = .Cells(1, Columns.Count).End(xlToLeft).Column 'Find the last non-blank cell in row 1

        .Range(.Cells(lRow, 1), .Cells(lRow, lCol)).Interior.Color = RGB(174, 240, 194)
        .Range(.Cells(1, lCol), .Cells(lRow, lCol)).Interior.Color = RGB(174, 240, 194)
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...