Поскольку вы держите UsedRange
в переменной rng
, вы можете добавить пару строк после Set rng = ActiveSheet.UsedRange
:
Set rng = ActiveSheet.UsedRange
rng.Offset(, rng.Columns.Count).Resize(, 1) = Date
Set rng = rng.Resize(, rng.Columns.Count + 1)
Вторая строка устанавливает ссылку на столбец рядом сваш диапазон и заполняет его текущей датой.
Последняя строка добавляет новый столбец в переменную rng
.Вы могли бы снова использовать UsedRange
, но при тестировании я обнаружил, что это ненадежно - обычно лучше вообще не использовать UsedRange
.
Чтобы найти последнюю ячейку без использования UsedRange
, вы можете использовать FIND
, чтобы найти последнюю непустую ячейку.
Sub Test()
Dim rng As Range
Set rng = ActiveSheet.Range("A1", LastCell(ActiveSheet))
'...
'...
'...
End Sub
Public Function LastCell(wrkSht As Worksheet) As Range
Dim lLastCol As Long, lLastRow As Long
On Error Resume Next
With wrkSht
lLastCol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
lLastRow = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
If lLastCol = 0 Then lLastCol = 1
If lLastRow = 0 Then lLastRow = 1
Set LastCell = wrkSht.Cells(lLastRow, lLastCol)
End With
On Error GoTo 0
End Function