Изменение размера динамического диапазона VBA - PullRequest
0 голосов
/ 12 июня 2019

Я написал следующий код и хочу отформатировать строку Grand Total. Я хочу сделать это динамичным, потому что ячейки итоговой строки меняются каждый месяц

Sub ReportData()

Application.ScreenUpdating = False

Dim Report As Worksheet
Set Report = WBNew.Worksheets("Report")

Report.UsedRange.Copy
With Sheets("Report").UsedRange
     .PasteSpecial xlPasteFormats
     .PasteSpecial xlPasteValues
     .Columns("A:Q").EntireColumn.Delete
     Set Rng = .FIND(What:="Grand Total", LookAt:=xlWhole, LookIn:=xlValues)
     Rng.Resize(, 18).Interior.ColorIndex = 20
End With

Application.ScreenUpdating = True

End Sub

Например, если я нахожу «Общий итог» в ячейке A20, то я хочу расширить до последней использованной ячейки, например, X20. Но это моя проблема, это не всегда X20, это меняется.

1 Ответ

1 голос
/ 12 июня 2019

Используйте .Cells(Rng.Row, .Columns.Count).End(xlToLeft), чтобы найти последнюю использованную ячейку в строке, где вы нашли Grand Total, и используйте ее, чтобы закрасить диапазон.

Set Rng = .FIND(What:="Grand Total", LookAt:=xlWhole, LookIn:=xlValues)
If Not Rng Is Nothing Then
    With Sheets("Report")
        .Range(Rng, .Cells(Rng.Row, .Columns.Count).End(xlToLeft)).Interior.ColorIndex = 20
    End With
Else
    MsgBox "Grand Total was not found."
End If

Обратите внимание, что вам нужно поставить галочку If Not Rng Is Nothing Then, иначе вывозникнет ошибка, если Grand Total не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...