Изменение размера динамического диапазона ячеек VBA

Я написал следующий код и хочу отформатировать строку 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. Но это моя проблема это не всегда Х20 меняет.

Так что вы спрашиваете?

SJR 12.06.2019 11:12

Я хочу изменить Rng.Resize(, 18).Interior.ColorIndex = 20 на динамический, это не всегда 18 ячеек, это может быть 20 или 15 ячеек из общей ячейки, которую я нахожу в столбце A

Vaggelis 12.06.2019 11:40

Так что, по сути, «Общая сумма» — это заголовок строки? Вы ищете его, и когда вы его найдете, вы хотите назначить rng все непустые ячейки? Другими словами, это последняя использованная ячейка в строке «Общий итог», которая определяет длину диапазона?

Stavros Jon 12.06.2019 11:54

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

Vaggelis 12.06.2019 11:59

Ваггелис, в этом случае вам, вероятно, будет полезно изучить свойство .End(xlToRight) диапазона. @SJR вы, вероятно, выиграете от stackoverflow.blog/2018/04/26/…

Stavros Jon 12.06.2019 12:11
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
5
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте .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 не существует.

Это работало нормально, но если я хочу пойти дальше и хочу удалить все строки ниже общей строки, как это сделать?

Vaggelis 12.06.2019 12:33
.Rows(Rng.Row + 1 & ":" & .Rows.Count).Delete
Damian 12.06.2019 12:40

Другие вопросы по теме