Ваша ошибка вызвана
Worksheets("Term Loans").Range(Worksheets("Term Loans").Cells(lRow, 1))
Когда вы передаете один параметр в Range(...)
, он интерпретируется как строка адреса.Когда этот параметр является самим диапазоном, (Worksheets("Term Loans").Cells(lRow, 1)
в этом случае) значение этого диапазона передается в Range
(таким образом, ... .Cells(lRow, 1).Value
в этом случае)
Итак,если ... .Cells(lRow, 1).Value
не вернет действительный адрес в стиле A1 (или имя именованного диапазона), вы получите сообщение об ошибке.
Вот как правильно ссылаться на диапазон
Sub Demo
Dim lRow As Long
Dim ws As Worksheet
Set ws = Sheets("Term Loans")
'Find the last non-blank cell in column A(1)
lRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' Now Copy the range:
ws.Cells(lRow, 1).EntireRow.Copy
' And paste to first empty row
ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
End Sub
Иулучшенная версия
Sub Demo2
Dim wb as Workbook
Dim ws As Worksheet
Dim rng as Range
Set wb = Thisworkbook 'or Activeworkbook, or some other book you specify
Set ws = wb.Worksheets("Term Loans")
With ws
'Find the last non-blank cell in column A(1)
Set rng = .Cells(.Rows.Count, 1).End(xlUp).EntireRow
End With
' Now Copy the range:
rng.Copy
' And paste to first empty row
rng.Offset(1, 0).PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
' To set a specific cell in the new row to a value
Dim MyVal as Long
MyVal = 42
rng.Offset(1, 0).Cells(1, 3) = MyVal
End Sub